【发布时间】:2011-02-08 09:06:49
【问题描述】:
我已经模板化了ComboBox,它基本上充当了一个简单的调色板。它填充了SolidColorBrush 对象的列表。
我还有一些保存当前颜色的十六进制值的数据和一个将十六进制转换为SolidColorBrush的转换器。
我正在尝试根据我的数据源中的颜色设置ComboBox 的SelectedItem 属性。由于我的组合中填充了 SolidColourBrush 类型的对象,并且我的绑定转换器返回了 SolidColorBrush,因此我认为这很简单:
SelectedItem="{Binding Color, Converter={StaticResource StringToBrush}}"
但是......它不起作用:(
我已经通过对ComboBox 的Background 属性使用完全相同的值来测试绑定是否在幕后工作。
所以,很明显,我不能只说 SelectedItem = [something],其中 [something] 基本上是一个与我想要被选中的项目相等的对象。
这样做的正确方法是什么?当然,在仅 XAML 的样式中使用绑定是可能的,而且我不必做一些讨厌的 C# 迭代组合框中的所有项目来尝试找到匹配项(这看起来非常老派)......?
【问题讨论】:
-
建议覆盖
SolidColorBrush的Equals函数。默认情况下,Equals,比较两个项目时检查引用是否相同。您可以更改此行为并设置Equals以检查例如颜色代码是否相同。检查this answer 以供参考。
标签: wpf data-binding combobox selecteditem