C# 更改所选颜色列表框

C# 更改所选颜色列表框,c#,wpf,listbox,background-color,selecteditem,C#,Wpf,Listbox,Background Color,Selecteditem,我想改变选定的背景,并让它显示一个圆角梯度。我在谷歌上搜索过,发现有些人确实会通过覆盖默认颜色来更改所选颜色。我有什么办法可以做到这一点吗?我在想,当一个项目被选中时,有没有办法显示一个圆角边框作为背景?我的博客上有一个例子。它会覆盖ControlTemplate及其使用的颜色。这里是ListBoxItem的默认样式(这是我们要更改的)。如果使用Expression Blend 4,可以通过右键单击“对象和时间线”控件中的listboxitem来“检索”此样式 让我们拿出一些重要的部分,让你

我想改变选定的背景,并让它显示一个圆角梯度。我在谷歌上搜索过,发现有些人确实会通过覆盖默认颜色来更改所选颜色。我有什么办法可以做到这一点吗?我在想,当一个项目被选中时,有没有办法显示一个圆角边框作为背景?

我的博客上有一个例子。它会覆盖ControlTemplate及其使用的颜色。

这里是ListBoxItem的默认样式(这是我们要更改的)。如果使用Expression Blend 4,可以通过右键单击“对象和时间线”控件中的listboxitem来“检索”此样式


让我们拿出一些重要的部分,让你学会自己做这件事


这是样式声明的开始。我们给了它一个x:Key,这样就可以从资源字典中检索它,并为ListBoxItem设置了TargetType

现在,我们要查找样式中要更改的部分。在本例中,我们将继续查找样式的一部分,它是新ControlTemplate上的多触发器


此MultiTrigger需要2个属性与值匹配才能激活。激活此触发器时,将背景色更改为Value=“…”,前景色更改为Value=“…”。为了获得渐变背景,我们需要将背景值=“…”中的值更改为其他笔刷。让我们创建一个快速的小渐变笔刷(颜色也很丰富!)


现在让我们将其应用于触发器的背景


现在,当此样式应用于ListBoxItem,并且ListBoxItem为Selected=True(和=false)时,您将在ListBoxItem上看到渐变背景

现在,您还需要圆角。如果我们一直走到ControlTemplate的顶部,我们将看到一个边界声明


Wao这是一款很棒的迷你toutorial。你就是那个男人。首先,它不起作用,但更改
GradientBrush
name起作用了。我认为它在任何方面都存在一些冲突。这是一个绝妙的回答