使用C#更改WPF Listbox SelectedItem文本颜色和高亮/背景颜色

我试图在运行时更改突出显示的(选定的)颜色和wpf列表框的突出显示的文本颜色。 我尝试创建一个样式并应用如下:

Style s = new Style(typeof(ListBox)); s.Resources.Add(SystemColors.HighlightBrushKey, Setting.ListSelectedColor); s.Resources.Add(SystemColors.HighlightTextBrushKey, Setting.ListSelectedTextColor); lstGames.Style = s; 

但这似乎什么都不做。 有没有办法实现这个目标?

编辑:

根据建议,我尝试使用DynamicResources来实现这一目标,但到目前为止,这还没有成功。 我的代码:

DYNAMICRESOURCES

     

列表框

            

在C#中应用资源

 this.Resources["ListSelectedColor"] = SETING.ListSelectedColor.Color; this.Resources["ListTextSelectedColor"] = SETTING.ListSelectedTextColor.Color; 

解:

       Hello Hi    

感谢Vinkal并且编程失败,我让一切都很美好。 我创建了以下资源:

      

然后将样式应用到我的列表框中:

 ItemContainerStyle="{DynamicResource ResourceKey=_ListBoxItemStyle}" 

最后,通过执行以下操作更改我的C#代码中的solidcolorbrush资源(因此更改setter值):

  this.Resources["ListSelectedColor"] = EmulatorPage.ListSelectedColor; this.Resources["ListTextSelectedColor"] = EmulatorPage.ListSelectedTextColor; 

谢谢你们俩!

对那里的所有邻居说话者……不要失去希望! 它可以做到

我从VSS开始,右键单击列表框,并为每个可用的东西使用每个“编辑模板”和“编辑其他模板”,直到我发现这些东西是如何工作的。

你很简单地用一个列表框开始,正常绑定到MVVM。

   

在UserControl或Window Resources中设置了一些东西……

ListBoxStyle – 这样可以设置列表框的主容器,您可以在此处设置主框的边框,边距,填充等。 对于我的例子,我只是摆脱一切去除它的风格。

    

ItemContainerStyle – 这是人们说不能重新设置样式的位 – 当选择一个项目时它包含“windows-selector-blue”栏,但是担心不是这样也可以重新设置样式(合并此UserControl.Resources部分结合上述)。

这部分是>将ItemContainer的模板从它的任何内容更改为Border,设置上边距为3以填充内容并设置样式。 我们用这种风格做的就是在项目的左右两侧添加3px透明边框。 然后在Triggers> IsSelected(myBorder的目标)中,将边框Brush更改为Red。

              

ListBoxItemDataTemplate – 下一步是创建显示数据的项容器。 在我的示例中,YourTextBlockStyler在Text>绑定上有一个触发器,并更改文本的前景色和背景色。 请注意,列表框样式的前景和背景设置为透明,因此如果要查看任何内容,则必须以TextBlock样式覆盖它们。

      

回到列表框 – 现在我们已经在参考资料部分设置了所有样式和模板,我们可以使用Style =“”ItemContainerStyle =“”和ItemTemplate =“”更新列表框

   

然后,您的无聊列表框将神奇地转换为带有红色边框选择器的完全重新设置的列表框

无聊的标准清单框完全重新设计的红色边框选择器列表框

所有没有编辑单个System.ResourceBrush =]