【发布时间】:2015-10-06 21:52:19
【问题描述】:
我尝试将红色设置为 TreeView 上的选定项目:
<TreeView x:Name="tvVisual" Grid.Row="0" Grid.RowSpan="2"
VirtualizingStackPanel.IsVirtualizing="True"
ItemsSource="{Binding Childrens,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
VirtualizingStackPanel.VirtualizationMode="Recycling"
>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate
ItemsSource="{Binding Childs,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
<TextBlock Text="{Binding Path=Value.Name}"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}" >
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter Property="FontWeight" Value="Normal" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="BorderBrush" Value="Red"/>
<Setter Property="Background" Value="Bisque"/>
</Trigger>
<!-- Selected but does not have the focus -->
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="True"/>
<Condition Property="IsSelectionActive" Value="False"/>
</MultiTrigger.Conditions>
<Setter Property="BorderBrush" Value="Red"/>
</MultiTrigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
我从this Sheridan answer 获取了部分代码,但它不适用于我。 如果我将 IsSelected 属性更改为 IsExpanded - 它可以工作。 在我的 getter\setter:值改变了。
可能会有所帮助:我通过代码选择并展开所有子节点。
那么,如何让 IsSelected 项设置新颜色呢? 谢谢!
附:这很奇怪 - 但在 getter\setter PropertyChanged 为空......
private bool _isSelected;
public bool IsSelected
{
get
{
return _isSelected;
}
set
{
_isSelected = value;
OnPropertyChanged("IsSelected"); //PropertyChanged is null.
}
}
【问题讨论】:
标签: wpf xaml treeview styles selecteditem