я делал анимацию для всей моей 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. –
@Claudiu oh, поэтому нет решения, которое я могу сказать, применив стиль анимации к любому дереву, независимо от того, что они определяют для триггера? Потому что я пытаюсь найти прочь, чтобы я мог применять их во всем мире, не изменяя код в TreeView. –
Я боюсь, что нет. Если вы не настроите стиль вручную, он будет установлен на первый, который можно найти в ресурсе treeView (включая унаследованные ресурсы). Вы все равно применяете стиль Trigger (помещая его в словарь ресурсов treeView), поэтому просто продолжайте и получите свой стиль триггера из стиля анимации. –