我可以将整个UI元素传递给IValueConverter吗?
ComboBox的地址与选定得分最高的地理数据库匹配。 Textblock具有用于输入匹配的地址。 如果地址相同,我希望前景为绿色,否则为红色。
我想也许我可以将整个TextBlock传递到dataconverter,获取其父StackPanel,获取子0,转换为Combobox获取第0个元素并进行比较,然后返回红色或绿色。 这可以吗?
否则我想我必须遍历视觉树,这就像我想的那样丑陋
是。 请参阅msdn文章
您可以使用转换器绑定到ComboBox
的SelectedItem
,该转换器将其相等值与InputtedAddress
进行比较,并相应地返回Brushes.Green
或Brushes.Red
。
棘手的部分是上面提到的转换器需要以某种方式跟踪InputtedAdress
; 这非常麻烦,因为我们不能使用ConverterParameter
进行绑定,所以我们需要一个有点涉及的转换器。
另一方面,使用IMultiValueConverter
可以更轻松地实现效果。 例如:
然后,您需要一个IMultiValueConverter
将两个传入值转换为Brush
。 使用文档提供的示例非常容易。