我正在動畫爲我所有的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