2010-09-17 20 views
6

Điều này đã làm tôi thất vọng trong một thời gian dài và tôi dường như không thể tìm được lời giải thích tốt cho nó. Mục đích của các dấu ngoặc tròn trong đánh dấu này là gì? Đây có phải là lối tắt XAML để truyền không? Tại sao nó chỉ có vẻ được sử dụng cho hình ảnh động?Tại sao bạn cần có các dấu ngoặc tròn quanh các giá trị thuộc tính cho hoạt ảnh XAML?

Storyboard.TargetProperty="(TextBlock.RenderTransform).(RotateTransform.Angle)" 

Trả lời

4

Đây là cú pháp để chỉ định Loại đủ điều kiện DependencyProperty. Điều này là bắt buộc vì thuộc tính đính kèm Storyboard.TargetProperty có thể được đính kèm vào bất kỳ DependencyObject nào. Điều đó có nghĩa là trình phân tích cú pháp XAML sẽ không biết cách giải quyết các thuộc tính trừ khi chúng hoàn toàn đủ điều kiện.

Cú pháp này cũng được sử dụng cho những thứ như ràng buộc với các thuộc tính đính kèm. Dưới đây là một ví dụ giả tạo để chứng minh điều này:

<Grid> 
    <Grid.RowDefinitions> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 
    <Border x:Name="Foo" Background="Blue" Grid.Row="10" /> 
    <Border x:Name="Bar" Background="Red" Height="{Binding (Grid.Row), ElementName=Foo}" /> 
</Grid> 

Nếu bạn loại bỏ các dấu ngoặc đơn từ Binding, bạn sẽ nhận được một lỗi ràng buộc (vì không có tài sản lưới điện trên các yếu tố Border).

0

Nó không chỉ được sử dụng cho hoạt ảnh (Xác thực lò xo đến tâm trí) - chúng chỉ đơn giản gọi tĩnh hoặc phôi, tương ứng. Về cơ bản, mã trên dịch sang (trong mã giả):

((RotateTransform)TextBlock.GetRenderTransform((TextBlock) element)).Angle = newValue; 

trong đó phần tử là phần tử được tác động và mớiValue là thuộc tính thiết lập hoạt ảnh.

Các vấn đề liên quan