这已经困扰了我很长一段时间,我似乎无法找到一个很好的解释.此标记中圆括号的用途是什么?它是用于投射的XAML快捷方式吗?为什么它似乎只用于动画?
Storyboard.TargetProperty="(TextBlock.RenderTransform).(RotateTransform.Angle)"
Run Code Online (Sandbox Code Playgroud)
这是用于指定 Type 限定的语法DependencyProperty。它是必需的,因为Storyboard.TargetProperty附加属性可以附加到任何DependencyObject. 这意味着 XAML 解析器不知道如何解析属性,除非它们是完全限定的。
此语法也用于绑定到附加属性之类的事情。这是一个人为的例子来证明这一点:
<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>
Run Code Online (Sandbox Code Playgroud)
如果从 中删除括号Binding,则会出现绑定错误(因为Border元素上没有 Grid 属性)。