我可以将整个UI元素传递给IValueConverter吗?

      

ComboBox的地址与选定得分最高的地理数据库匹配。 Textblock具有用于输入匹配的地址。 如果地址相同,我希望前景为绿色,否则为红色。

我想也许我可以将整个TextBlock传递到dataconverter,获取其父StackPanel,获取子0,转换为Combobox获取第0个元素并进行比较,然后返回红色或绿色。 这可以吗?

否则我想我必须遍历视觉树,这就像我想的那样丑陋

       

是。 请参阅msdn文章

您可以使用转换器绑定到ComboBoxSelectedItem ,该转换器将其相等值与InputtedAddress进行比较,并相应地返回Brushes.GreenBrushes.Red

棘手的部分是上面提到的转换器需要以某种方式跟踪InputtedAdress ; 这非常麻烦,因为我们不能使用ConverterParameter进行绑定,所以我们需要一个有点涉及的转换器。

另一方面,使用IMultiValueConverter可以更轻松地实现效果。 例如:

          

然后,您需要一个IMultiValueConverter将两个传入值转换为Brush 。 使用文档提供的示例非常容易。