[英]Hierarchical data template trigger selected item property
I have created a static application resource for my TreeView
style. 我已经为
TreeView
样式创建了一个静态应用程序资源。 I have a custom type as the hierarchical data template type, let's call it Foobar. 我有一个自定义类型作为分层数据模板类型,我们称之为Foobar。 The
HierarchicalDataTemplate
items source is bound to the Foobar's FooCollection. HierarchicalDataTemplate
项源绑定到Foobar的FooCollection。
The custom object binding is not an issue. 自定义对象绑定不是问题。 Problem is I want to change style of the selected
TreeViewItem
using triggers. 问题是我想使用触发器更改所选
TreeViewItem
样式。 The trigger for property IsMouseOver
trigger as it should. 属性
IsMouseOver
触发器应该触发。 But I cannot find anywhere to trigger the property IsSelected
in my HierarchicalDataTemplate.Triggers
? 但是我在
HierarchicalDataTemplate.Triggers
找不到任何地方触发属性IsSelected
吗?
<Style TargetType="TreeView" x:Key="TreeView">
<Setter Property="BorderBrush" Value="{x:Null}"/>
<Setter Property="Background" Value="#00000000"/>
<Style.Resources>
<!--Foobar tree view items-->
<HierarchicalDataTemplate DataType="{x:Type f:Foobar}" ItemsSource="{Binding FooCollection}">
<TextBlock Name="tbbName" Text="{Binding Name}" Foreground="#7FFFFFFF" FontSize="16"/>
<HierarchicalDataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="tbbName" Property="Effect">
<Setter.Value>
<DropShadowEffect ShadowDepth="0" Color="#7FFFFFFF" Opacity="1" BlurRadius="20"/>
</Setter.Value>
</Setter>
<Setter TargetName="tbbName" Property="Foreground" Value="#AFFFFFFF"/>
</Trigger>
</HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>
</Style.Resources>
</Style>
What you can do is binding the IsSelected
-property from TreeViewItem
to a corresponding property in Foobar
您可以做的是将
TreeViewItem
的IsSelected
-property绑定到Foobar
的相应属性
class Foobar : INotifyPropertyChanged
{
...
private bool _isSelected;
public bool IsSelected
{
get => _isSelected;
set
{
if(_isSelected == value)
return;
_isSelected = value;
OnPropertyChanged();
}
}
...
}
<TreeView>
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
...
</Style>
</TreeView.ItemContainerStyle>
...
</TreeView>
then you can use a DataTrigger
然后您可以使用
DataTrigger
<DataTrigger Binding="{Binding IsSelected}" Value="True">
<DataTrigger.Setters>
...
</DataTrigger.Setters>
</DataTrigger>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.