wpf - 为什么 XAML 动画的属性值需要用圆括号括起来?

标签 wpf xaml

这个问题已经困扰我很长时间了,我似乎找不到一个很好的解释。此标记中圆括号的用途是什么?它是转换的 XAML 快捷方式吗?为什么它似乎只用于动画?

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

最佳答案

这是指定类型限定的DependencyProperty 的语法。这是必需的,因为 Storyboard.TargetProperty 附加属性可以附加到任何 DependencyObject。这意味着 XAML 解析器将不知道如何解析属性,除非它们是完全限定的。

此语法还用于绑定(bind)到附加属性之类的事情。这是一个人为的示例来演示这一点:

<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>

如果从 Binding 中删除括号,您将收到绑定(bind)错误(因为 Border 元素上没有 Grid 属性)。

关于wpf - 为什么 XAML 动画的属性值需要用圆括号括起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3737458/

相关文章:

wpf - 关闭抗锯齿以在 WPF 中绘制位图

使用 ScrollViewer 和动态拉伸(stretch)的 Wpf 滚动图像

.net - 关于在 WPF 中调试焦点问题的任何提示?

wpf - 在Virtual PC中测试DirectX应用程序?

wpf - 将 DataTrigger 应用于 GridViewColumn

silverlight - 如何动态发现 Silverlight prism 应用程序中所有模块中的所有 XAML 文件

c# - LiveCharts2将不断变化的数据绑定(bind)到图表上

c# - 如何通过局域网在两个不同的 WPF 应用程序之间进行通信?

c# - MVVM: View 导航无法正常工作

wpf - 路径的数据点以绘制刻度线