2

我正在尝试在绑定的布尔值上进行一对TextBlocks 切换(一个Visible,另一个Collapsed,反之亦然)。

我可以用BooleanToVisibilityConverter一个但不能做一个!对于另一个,所以我尝试使用 MVVM Light's UniversalConverter,它在ConverterParameter.

麻烦的是,我找不到任何使用示例并且我的尝试失败了。

我已经在 XAML 资源中声明了它:

<Window.Resources>
    <ex:UniversalConverter x:Key="UniversalConverter" />
</Window.Resources>

然后将其添加到TextBlock

<TextBlock Visibility="{Binding Path=ShowA, Converter={StaticResource universalConverter}, ConverterParameter='b=>b?Visible:Collapsed'}">A</TextBlock>
<TextBlock Visibility="{Binding Path=ShowA, Converter={StaticResource universalConverter}, ConverterParameter='b=>b?Collapsed:Visible'}">B</TextBlock>

这会在 XAML 设计窗口中引发异常:Unknown identifier 'Visible'.

我也试过b=>b?Visibility.Visible:Visibility.Collapsed这是 UniversalConverterConvert方法注释中的一个例子;那抛出Unknown identifier 'Visibility'

如何将所需的引用添加到UniversalConverter?

4

2 回答 2

2

老实说,我从未使用过UniversalConverter优秀的 MVVM Light 工具包框架中的类,所以我无法回答您的具体问题“如何使其工作”。

但是为了解决您的实际问题,您可以创建自己的BooleanToVisibilityConverter允许反转 true/false 和 Visible/Collapsed 之间的映射。请参阅如何反转 BooleanToVisibilityConverter?举些例子。

UniversalConverter就个人而言,出于多种原因,我真的会避免使用:

  • 你现在知道的无证
  • 强制在 XAML 中编写编程逻辑,这不是 XAML 的主要目标......
  • ...强制编写无法调试的 C# 代码行(至少对于 VS2010 + .Net 4),这意味着这个转换器是错误的方法恕我直言
于 2012-07-26T12:22:22.903 回答
0

它似乎UniversalConverter自 2013 年以来已被删除

http://blog.galasoft.ch/posts/2013/01/mvvm-light-v4-1-26-change-log/

BL0023.004, 移除 UniversalConverter

于 2016-11-21T12:57:54.757 回答