我正在尝试在绑定的布尔值上进行一对TextBlock
切换(一个Visible
,另一个Collapsed
,反之亦然)。
我可以使用BooleanToVisibilityConverter
但不能做!对于另一个,所以我试图使用MVVM Light UniversalConverter
,它在ConverterParameter
中使用lambda。
麻烦的是,我找不到任何使用示例,我的尝试失败了。
我已经在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
,这是UniversalConverter的Convert
方法评论中的一个例子;抛出Unknown identifier 'Visibility'
。
如何添加UniversalConverter
所需的引用?
答案 0 :(得分:2)
老实说,我从未使用过优秀的MVVM Light工具包框架中的UniversalConverter
类,因此我无法回答您的具体问题“如何使其工作”。
但是为了解决您的实际问题,您可以创建自己的BooleanToVisibilityConverter
,允许反转true / false和Visible / Collapsed 之间的映射。有关示例,请参阅How do I invert BooleanToVisibilityConverter?。
我个人真的会因为很多原因而避免使用UniversalConverter
:
答案 1 :(得分:0)
自2013年以来UniversalConverter
似乎已被删除
http://blog.galasoft.ch/posts/2013/01/mvvm-light-v4-1-26-change-log/
BL0023.004,删除UniversalConverter