У меня есть несколько синхронизированных экземпляров TreeView ..
это работает довольно хорошо, и я привязываю некоторые свойства к ViewModel.
<Style x:Key="FlattenedTreeViewItem" TargetType="{x:Type TreeViewItem}">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="IsExpanded" Value="{Binding IsExpanded}" />
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
По той или иной причине я решил переопределить шаблон TreeViewItem.
привязки стертых свойств выше
Все, что я хочу сделать, это вернуть выбор по умолчанию обратно в TreeViewItem, но, похоже, ничего не работает.
Я попытался использовать простой триггер на IsSelected и установить границы / фон / передний план ... ничего не показывает никаких изменений.
Я погуглил, и все, что я нашел до сих пор, было страницей XAML просто для того, чтобы установить выбранный стиль ??
Нет ли простого способа вернуть его обратно в шаблон?
то же самое относится к IsExapnded,
я должен использовать это:
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="ExpansionStates">
<VisualState x:Name="Expanded">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="ItemsHost">
<DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Visible}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Collapsed" />
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
кажется чрезмерным, но по крайней мере этот работает.
С выбранным, я не могу заставить его работать с помощью простого триггера ... и я не могу передать выбранный стиль, и я не хочу вносить какой-то огромный уродливый кусок xaml.
вот мой полный шаблон:
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TreeViewItem">
<StackPanel>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="ExpansionStates">
<VisualState x:Name="Expanded">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="ItemsHost">
<DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Visible}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Collapsed" />
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<ContentPresenter ContentSource="Header" />
<ItemsPresenter Name="ItemsHost" Visibility="Collapsed" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>