Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 多值转换器的结果本身可以转换吗?_Wpf_Ivalueconverter_Imultivalueconverter - Fatal编程技术网

Wpf 多值转换器的结果本身可以转换吗?

Wpf 多值转换器的结果本身可以转换吗?,wpf,ivalueconverter,imultivalueconverter,Wpf,Ivalueconverter,Imultivalueconverter,我的WPF应用程序中有一个表单,我必须添加一个编辑按钮。现在,表单始终处于编辑模式,没有“查看模式”。但是,由于各种原因,我需要将控件保持在视图模式,直到用户单击编辑按钮,然后隐藏编辑按钮并在其位置显示保存按钮 我的表单已经有一个booldependencProperty,名为CanModify,当用户的权限授予他们编辑表单中显示的记录的权限时,该属性为真。我正在添加一个名为InEditMode的新booldependencProperty,它将默认为false。隐藏和启用按钮非常简单,但是如果

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

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

我已经有一个类实现了
IValueConverter
,并将bool转换为
可见性
。我刚刚编写了一个类,它实现了
IMultiConverter
,它接受一个布尔数组,并将它们和在一起(或对它们进行or,具体取决于参数的值)

我想做的是获取
IMultiConverter
的结果,并将其通过
IValueConverter
将结果转换为
可见性
。我可以这样做吗?或者,我最好在代码中对一个新的
DependencyProperty
执行AND操作


托尼

你不能连锁转换器


相反,将多值转换器更改为采用字符串参数“bool”或“visibility”。根据参数返回bool或visibility对象

,因为不能链接转换器,我在类中添加了另一个布尔属性。我将方法添加到两个属性中,新属性依赖于这两个属性,当它们发生更改时将调用它们。这些重新计算新属性的值。然后,我使用原始的布尔-可视性转换器来显示或隐藏有问题的控件。

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

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

然后你会做下面的事情

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


这是一个有趣的问题。我最后添加了另一个布尔属性,当其他两个属性更改其值时,其值将被设置。我没有把你的答案标记为答案,因为这不是我所做的,然而,我给你一个向上投票,因为你的答案的第一行。我的转换器已经在使用参数来传递“AND”或“or”,以便在组合绑定到MultiBinding.Neat代码的布尔时使用该操作。开箱即用,这种能力不存在,但你有一个非常聪明的想法。它不适合你?当我今天下班回来时,我必须做一个适当的提交(而不是在github ui中摆弄),我会在完成后进行更新。好的,我想我会检查一下。