我的 WPF 应用程序中有一个窗体,我必须向其添加一个"编辑"按钮。 现在,表单始终处于编辑模式,没有"查看模式"。 但是,由于各种原因,我需要将控件保持在视图模式,直到用户单击"编辑"按钮,然后隐藏编辑按钮并在其位置显示"保存"按钮。
我的表单已经有一个名为 CanModify
的布尔DependencyProperty
,当用户的权限授予他们编辑表单中显示的记录的权限时,这是正确的。 我正在添加一个名为 InEditMode
的新布尔DependencyProperty
,它将默认为 false。 隐藏和启用按钮非常简单,但是如果用户无法编辑记录,或者他们可以编辑记录并且表单处于查看模式,我想隐藏这个ComboBox
控件。 为此,我需要将两个布尔属性的 AND 结果转换在一起,然后将其转换为Visibility
值。
我已经有一个实现IValueConverter
并将布尔值转换为Visibility
的类。 我刚刚编写了一个实现IMultiConverter
的类,该类将布尔数组和 ANDS 一起(或 OR 它们,具体取决于参数的值)。
我想做的是获取IMultiConverter
的结果并通过IValueConverter
将结果转换为Visibility
。 我能做到吗? 或者我会最好在新DependencyProperty
后面的代码中执行 AND ?
托尼
你确实可以链接转换器,我自己的例子还没有处理多值转换器,但实现一个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>
您不能链接转换器。
相反,将多值转换器更改为采用字符串参数"bool"或"可见性"。根据参数返回布尔值或可见性对象
因为不能链接转换器,所以我在我的类中添加了另一个布尔属性。 我在新属性所依赖的两个属性中添加了方法,当它们更改时会调用这些属性。 这些将重新计算新属性的值。 然后,我使用原始布尔到可见度转换器来显示或隐藏有问题的控件。