我想在DropShadowEffect
周围TreeViewItem
,同时我希望TreeViewItem
在选中时更改颜色。
如果DropShadowEffect
未应用于TreeViewItem
中的文字,我需要在包含Background="White"
的边框上设置DropShadowEffect
,这似乎会覆盖选中时突出显示TreeViewItem
。
我可以正确应用DropShadowEffect
,如下例所示:
或者我可以在选择时正确突出显示,但在文本上留下阴影,如下例所示:
有没有办法保持TreeView
的突出显示可能性,同时保持DropShadowEffect
不适用TreeViewItem
中的文字?
Panel.ZIndex
的{{1}},如TreeViewItem
。我无法在<Setter Property="Panel.ZIndex" Value="5"/>
上应用白色背景,因为我的边框周围有圆角,TreeViewItem
的完美方形背景不尊重。
我不希望将TreeViewItem
应用于DropShadowEffect
按钮。
树视图:
Expander
VM:
<Window x:Class="TreeViewDropShadowExampl.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:TreeViewDropShadowExampl"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<TreeView ItemsSource="{Binding Root}" MinWidth="100" MinHeight="100">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:Node}" ItemsSource="{Binding Children}">
<Grid>
<Border BorderBrush="Gray">
<TextBlock Text="{Binding ID}"/>
<Border.Effect>
<DropShadowEffect Color="Gray" BlurRadius="2"/>
</Border.Effect>
</Border>
</Grid>
</HierarchicalDataTemplate>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="Margin" Value="2" />
</Style>
</TreeView.Resources>
</TreeView>
</Window>
节点
using System.Collections.ObjectModel;
namespace TreeViewDropShadowExampl
{
class VM
{
public VM()
{
var root = new Node("1");
Root.Add(root);
for (int i = 1; i < 4; i++)
{
Node newNode = new Node("1." + i.ToString());
for (int j = 1; j < 4; j++)
{
newNode.Children.Add(new Node("1." + i.ToString() + "." + j.ToString()));
}
root.Children.Add(newNode);
}
}
public ObservableCollection<Node> Root { get; set; } = new ObservableCollection<Node>();
}
}
答案 0 :(得分:1)
不是将效果应用于数据模板内的npm install --save amplement-primus
,而是将效果应用于整个项目:
Border
不要忘记从数据模板<TreeView>
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Style.Triggers>
<Trigger Property="IsSelected" Value="False">
<Setter Property="Background" Value="White"/>
</Trigger>
</Style.Triggers>
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect Color="Gray" BlurRadius="2"/>
</Setter.Value>
</Setter>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
中移除效果。
或者甚至完全删除Border
,如果你只需要阴影效果。
<强>更新强>
您也可以将白色背景应用于该项目。只需在触发器中进行操作即可确保仅在未选择项目时才会出现。
更新2:
拥有所有新要求,这里是您问题的完整解决方案。
首先,可以使用圆角选择矩形 - 您只需要更改选区边框的样式。
Border