我正在动画为我所有的TreeView .....动画风格被覆盖
拥有一个App.xaml中有:
<Style TargetType="{x:Type TreeView}">
<Style.Resources>
<Style TargetType="{x:Type TreeViewItem}">
<Style.Triggers>
<EventTrigger RoutedEvent="TreeViewItem.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity"
From="0" To="1" BeginTime="00:00:00" Duration="00:00:01" FillBehavior="Stop"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</Style.Resources>
</Style>
它的工作原理为每TreeView,我可以看到TreeViewItem淡入。
但是,如果TreeView被定义为下面用风格触发器:
<TreeView>
<TreeView.Resources>
<Style TargetType="{x:Type TreeViewItem}">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="True">
//Do some work
</Trigger>
</Style.Triggers>
</Style>
</TreeView.Resources>
<TreeViewItem Header="Item1">
<TreeViewItem Header="Item2">
<TreeViewItem Header="Item3"/>
<TreeViewItem Header="Item4"/>
</TreeViewItem>
<TreeViewItem Header="Item5"/>
</TreeViewItem>
<TreeViewItem Header="Item6"/>
</TreeView>
该动画将不再工作。 有没有解决方法或解决方法?我真的不希望把整个动画代码TreeView的内部...
您与定义触发一个覆盖你的动画风格。样式被解析的方式就像任何其他WPF资源一样:它将沿着逻辑树遍历,直到它找到并停止。在你的情况下,它会找到与触发器的风格,不会继续下去。菲尔解决方案是正确的,使用BasedOn从动画风格继承您的触发器样式。 – 2012-03-19 18:18:26
@Claudiu哦,所以没有解决方案,我可以说动画风格适用于任何树,无论他们定义的触发器?因为我试图找到一个可以在不改变TreeView上的代码的情况下全局应用它们。 – 2012-03-19 18:53:29
恐怕不是。如果不手动设置样式,它将设置为treeView资源中的第一个查找(包括继承资源)。无论如何,您正在应用触发器样式(将其放置在treeView资源字典中),所以继续从动画样式派生您的触发器样式。 – 2012-03-19 19:08:29