我有一个控件,只有当一系列属性中的至少一个返回true时才能看到它。我即将实现自己的BooleanOrToVisibilityMultiConverter,但感觉必须有一个更好(并且完全明显)的方法来做到这一点。
请赐教!
答案 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>