gpt4 book ai didi

wpf - TreeView.IsSelected 触发器无法正常工作

转载 作者:行者123 更新时间:2023-12-04 02:19:41 28 4
gpt4 key购买 nike

我正在尝试更改 TreeView 中的 SelectedItem 模板。我按照描述在 Style.Triggers 中编写了简单的容器样式和更改项目模板

[1]: How do I highlight a treeview selected item with some color?

[2]: WPF TreeView: How to style selected items with rounded corners like in Explorer但它不起作用。

然后我新建了一个项目,用简单的样式和模板创建了TreeView

<TreeView>
<TreeViewItem Header="Item1" />
<TreeViewItem Header="Item2" />
<TreeViewItem Header="Item3"/>

<TreeView.Resources>
<DataTemplate DataType="{x:Type TreeViewItem}" x:Key="selectedTemplate">
<StackPanel Height="25">
<TextBlock Text="SelectedItem"/>
</StackPanel>
</DataTemplate>
</TreeView.Resources>

<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="FontStyle" Value="Italic"/>
<Setter Property="Foreground" Value="Red"/>
<Setter Property="Background" Value="Green"/>
<Setter Property="ItemTemplate" Value="{StaticResource selectedTemplate}"/>
</Trigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>

所以,然后我在 TreeView 中选择了 TreeViewItem,FontWeight、FontStyle 和 Foreground 都改变了,但是 Background 和 ItemTemplate 没有改变。

结果:here

你能解释一下这种奇怪的行为吗?

最佳答案

ItemTemplate 属性影响子元素而不是项目本身。背景设置为装饰内容的 Border 的默认选择背景,因此下方的绿色不可见。您可以这样实现您的目标:

 <TreeView>
<TreeViewItem Header="Item1" />
<TreeViewItem Header="Item2" />
<TreeViewItem Header="Item3"/>

<TreeView.Resources>
<ControlTemplate TargetType="{x:Type TreeViewItem}" x:Key="selectedTemplate">
<StackPanel Height="25">
<TextBlock Text="SelectedItem" Background="{TemplateBinding Background}" />
</StackPanel>
</ControlTemplate>
</TreeView.Resources>

<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="FontStyle" Value="Italic"/>
<Setter Property="Foreground" Value="Red"/>
<Setter Property="Background" Value="Green"/>
<Setter Property="Template" Value="{StaticResource selectedTemplate}"/>
</Trigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>

关于wpf - TreeView.IsSelected 触发器无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9110733/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com