在其中一个模块中,我看到了以下样式设置。
<Style TargetType="Rectangle">
<Style.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation To="300" Duration="0:0:1.5"
AccelerationRatio="0.10" DecelerationRatio="0.25"
Storyboard.TargetProperty="(Canvas.Width)" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
请注意,TargetType
为Rectangle
,而Storyboard.TargetProperty
为Canvas.Width
。
样式/触发器仍然正常工作。它为Rectangle.width
属性设置了动画。
我理解在Storyboard.TargetProperty(或XAML中的任何其他位置),我们必须使用PropertyPath syntax,就像(ownerType.PropertyName)
。
我的问题是如何在Canvas.Width
上设置动画动画Rectangle.Width
答案 0 :(得分:1)
这是因为XAML编译器通过在Canvas.Width
上查找名为WidthProperty
的静态字段来解析Canvas
。由于Canvas
继承自FrameworkElement
,因此对Canvas.WidthProperty
的引用会解析为FrameworkElement.WidthProperty
。
由于Rectangle
也继承自FrameworkElement
,动画Canvas.WidthProperty
与动画Rectangle.WidthProperty
相同,与动画FrameworkElement.WidthProperty
相同。
答案 1 :(得分:0)
由于Width Property
是Property
班级的FrameworkElement
,您可以输入继承自Control
FrameworkElement
个Storyboard.TargetProperty="(FrameworkElement.Width)"
Storyboard.TargetProperty="(DataGrid.Width)"
但我最喜欢的是:
{{1}}
试试吧。它会工作!