如何在WPF中多次转换值

时间:2010-10-23 10:44:41

标签: wpf

我有一个2转换器。

  1. 布尔值到可见性(Bool2Visible) - 此转换器将布尔值转换为Visibility enum
  2. 反转布尔值(InvertBool) - 此转换器反转布尔值
  3. 我的xaml在这里

    <stackpanel Name="A"
              visibility="{Binding isTrue,Converter={StaticResource Bool2Visible}}"/>
    <stackpanel Name="B"
              visibility="{Binding isTrue,Converter={StaticResource Bool2Visible}}"/>
    

    我的目标是如果isTrue = true,Stackpanel B将隐藏。我需要使用InsertBool并在Stackpanel B绑定中使用Bool2Visible。

    如何一次使用2个转换器。

    否则。 newvalue=Bool2Visible(InsertBool(value))

    如果不可能,我可以创建InvertAndConvertToVisibility转换器。

3 个答案:

答案 0 :(得分:3)

  

如果不可能,我可以创建InvertAndConvertToVisibility转换器。

就我个人而言,我只想说采取这个选项,它的工作时间不到5分钟,如果你使用一个单独的转换器并对它进行恰当的命名,很明显你打算发生什么。

另一种方法是修改Bool2Visible转换器,使用parameter参数传递一个标志,指示操作应该被否定。

答案 1 :(得分:0)

如果您需要根据两个单独的输入确定值,我宁愿使用特殊的MultiValueConverter!

答案 2 :(得分:0)

您可以使用一些检查ConverterParameter的逻辑来扩展Bool2Visible转换器。在第二个StackPanel中的绑定中添加ConverterParameter =“invertValue”并在转换器类内部检查参数的值(ConverterParameter自动传递)。

通过这种方式,您可以解决问题。