我正在尝试在绑定(bind) bool 值。
我可以使用 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 设计窗口中引发异常:未知标识符“Visible”
。
我还尝试了 b=>b?Visibility.Visible:Visibility.Collapsed
这是 UniversalConverter 的 Convert
方法注释中的示例;抛出未知标识符“Visibility”
。
如何添加 UniversalConverter
所需的引用?
最佳答案
老实说,我从未使用过 UniversalConverter
来自优秀的 MVVM Light 工具包框架的类,因此我无法回答您的具体问题“如何使其工作”。
但为了解决您的实际问题,您可以创建自己的 BooleanToVisibilityConverter
允许反转真/假和可见/折叠之间的映射。请参阅How do I invert BooleanToVisibilityConverter?例如。
就我个人而言,我真的会避免使用 UniversalConverter
出于多种原因:
- 正如您现在所知,没有记录
- 强制在 XAML 中编写编程逻辑,这不是 XAML 的主要目标...
- ...强制编写无法调试的 C# 代码行(至少对于 VS2010 + .Net 4),这意味着这个转换器是错误的方法恕我直言
关于wpf - MVVM Light UniversalConverter bool 到 Visibility,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11668166/