Til*_*lak 5 .net c# wpf xaml dependency-properties
在其中一个模块中,我看到了以下样式设置.
<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>
Run Code Online (Sandbox Code Playgroud)
注意,TargetType是Rectangle,Storyboard.TargetProperty是Canvas.Width.样式/触发器仍然正常工作.这是动画的Rectangle.width财产.
我理解在Storyboard.TargetProperty(或XAML中的任何其他地方),我们必须使用PropertyPath语法,就像(ownerType.PropertyName).
我的问题是如何设置动画Canvas.Width是动画Rectangle.Width
这是因为 XAML 编译器Canvas.Width通过查找名为WidthPropertyon的静态字段来进行解析Canvas。由于Canvas继承自FrameworkElement,因此对 的引用解析Canvas.WidthProperty为FrameworkElement.WidthProperty。
因为Rectangle也是继承自FrameworkElement,动画Canvas.WidthProperty同动画Rectangle.WidthProperty,同动画FrameworkElement.WidthProperty。