做布尔或可见性的最佳方法

时间:2010-10-07 11:19:27

标签: wpf data-binding

我有一个控件,只有当一系列属性中的至少一个返回true时才能看到它。我即将实现自己的BooleanOrToVisibilityMultiConverter,但感觉必须有一个更好(并且完全明显)的方法来做到这一点。

请赐教!

2 个答案:

答案 0 :(得分:5)

MVVM这样做的方法是从模型中返回一个布尔值,其中包含判断控件是否可见的逻辑。

通常如果我有这种逻辑,那是因为我试图表达一些域概念 - 例如:

  • 它在这个国家
  • 已准备好处理
  • 它仍然需要一些工作
  • 这是一个完整的装备
  • 所有作者都归于

通过保持导致域概念的逻辑超出Gui,您可以更轻松地进行测试和维护。否则,你最终会在使用域概念的地方复制相同的逻辑,而在Xaml中则不是那么容易。

答案 1 :(得分:3)

好吧,使用转换器是一种选择,您也可以使用多数据触发器(没有一种解决方案更好,取决于您的方案)。

您需要在控件(或DataTemplate)的触发器集合中设置它:

    <DataTemplate.Triggers>
        <MultiDataTrigger>
            <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding IsInstalled}" Value="True"/>
                <Condition Binding="{Binding IsOwned}" Value="False" />
            </MultiDataTrigger.Conditions>
            <MultiDataTrigger.Setters>
                <Setter TargetName="SkullImage" Property="Visibility" Value="Visible" />
            </MultiDataTrigger.Setters>
        </MultiDataTrigger>
    </DataTemplate.Triggers>