wpf - MVVM Light UniversalConverter bool 到 Visibility

标签 wpf mvvm-light

我正在尝试在绑定(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/

相关文章:

c# - 在打印前使用 WPF 窗口作为视觉模板

c# - 单个 ViewModel 的多个 View

c# - 如何从C#运行.exe

wpf - 一个模型实体,多个页面 -> 多个 View ?多个 View 模型?

.net - XAML - 不仅隐藏,还通过绑定(bind)“删除”元素

c# - 重新定义类以添加新功能或找到解决方法

c# - MVVMLight 中的 IoC 容器 - 如何将具体实现传递给指定的元素?

wpf - MVVM 灯光和组合框

c# - WP7从墓碑中恢复并返回页面

c# - Mvvmlight UpdateSourceTrigger 不工作