我正在制作所有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中......
答案 0 :(得分:0)
1)使用现有样式
创建一个名为style的基础<Style x:Key="baseTreeViewStyle"
TargetType="{x:Type TreeViewItem}"> existing style here </Style>
2)根据您的基本样式创建一个没有名称的样式 - 这将是您隐式的全局样式
<Style TargetType="{x:Type TreeViewItem}"
BasedOn={StaticResource baseTreeViewStyle} />
3)在树视图中扩展基本样式
<Style TargetType="{x:Type TreeViewItem}"
BasedOn="{StaticResource baseTreeViewStyle}">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="True">
//Do some work
</Trigger>
</Style.Triggers>
</Style>
现在您获得了一个隐式的全局样式,但如果您需要特定的附加行为,则覆盖基本样式。
为了更加彻底,您的基本样式应该基于默认的TreeViewItem样式
<Style x:Key="baseTreeViewStyle"
TargetType="{x:Type TreeViewItem}"
BasedOn="{StaticResource {x:Type TreeViewItem}}">
existing style here
</Style>