我正在为WPF中的复杂支持模型设计表单。一些表单控件依赖于在底层视图模型上设置的多个选项,因此我已经设置了示例
<TextBlock.Visibility>
<MultiBinding Converter="{StaticResource AndMultiValueVisibilityConverter}">
<Binding Path="RelevantSystemOption" />
<Binding Path="RelevantLicenseKeyOption"/>
</MultiBinding>
</TextBlock.Visibility>
AndMultiValueVisibilityConverter接受布尔值,只有当它们全部为真时才会显示,以供参考。
这会在设计时关闭控件的可见性,这是我不想要的。
我意识到Expression Blend and design-time attributes能够进行某些可在运行时忽略的布局确定。 d:IsHidden没有得到尊重,而且d:LayoutOverrides不会对Visibility起作用,因为它是一个动态属性。
我宁愿不使用d:DataContext伪装整个支持模型。如果必须的话,我会这样做,但是有一种更简单的方法可以强迫这个特定的控制,也许还有一些其他人在设计时始终可见吗?
答案 0 :(得分:2)
只需使用
DesignerProperties.GetIsInDesignMode(new DependencyObject())
在你的多值转换器中确定你是否在设计师中,如果是,则返回true。
如果您认为它可能违反该模式,可以在MVVM应用程序中的转换器中使用它。转换器是UI关注的问题。
https://msdn.microsoft.com/en-us/library/system.componentmodel.designerproperties(v=vs.110).aspx