MultiValueConverter的结果可以自己转换吗?

时间:2012-05-23 20:01:58

标签: wpf ivalueconverter imultivalueconverter

我的WPF应用程序中有一个表单,我必须添加一个“编辑”按钮。现在,表单始终处于编辑模式,并且没有“查看模式”。但是,由于各种原因,我需要将控件保持在查看模式,直到用户单击“编辑”按钮,然后隐藏编辑按钮并在其位置显示“保存”按钮。

我的表单已经有一个名为DependencyProperty的bool CanModify,当用户的权限授予他们编辑表单中显示的记录的权限时,这是真的。我添加了一个名为DependencyProperty的新bool InEditMode,默认为false。隐藏和启用按钮非常简单,但如果用户无法编辑记录,或者他们可以编辑它并且表单处于查看模式,我想要隐藏此ComboBox控件。为此,我需要将两个bool属性的AND运算结果转换为一个,然后将其转换为Visibility值。

我已经有一个实现IValueConverter的类,并将bool转换为Visibility。我刚刚写了一个实现IMultiConverter的类,它接受一个bool数组和ANDS它们在一起(或者根据参数的值对它们进行OR运算)。

我想要做的是获取IMultiConverter的结果并将其通过IValueConverter将结果转换为Visibility。我能这样做吗?或者我会更好地在新的DependencyProperty后面的代码中执行AND?

3 个答案:

答案 0 :(得分:2)

你确实可以链转换器,我自己的例子还没有处理MultiValueConverters,但实现LinkedMultiValueConverter不应该太难。这种方法的缺点之一是您必须重新创建当前必须使用提供的属性的任何转换器。

GIT中://github.com/pmacn/ValueConverters.WP8.git

https://github.com/pmacn/ValueConverters.WP8

然后你会做以下

<con:LinkedConverter x:Name="MyFancyLinkedConverter">
    <con:BooleanInversionConverter />
    <con:BooleanToVisibilityConverter />
</con:LinkedConverter>

答案 1 :(得分:1)

你不能链转换器。

而是更改MultiValueConverter以获取字符串参数,&#34; bool&#34;或者&#34;可见性&#34;。根据参数返回bool或可见性对象

答案 2 :(得分:0)

因为你不能链转换器,我在我的类中添加了另一个布尔属性。我为新属性所依赖的两个属性添加了方法,这些属性在更改时被调用。这些重新计算新属性的值。然后我使用我原来的布尔值来显示或隐藏有问题的控件。