在VS2013中明确设置/忽略设计时的可见性?

时间:2017-07-28 19:23:47

标签: wpf visual-studio-2013

我正在为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伪装整个支持模型。如果必须的话,我会这样做,但是有一种更简单的方法可以强迫这个特定的控制,也许还有一些其他人在设计时始终可见吗?

1 个答案:

答案 0 :(得分:2)

只需使用

DesignerProperties.GetIsInDesignMode(new DependencyObject())

在你的多值转换器中确定你是否在设计师中,如果是,则返回true。

如果您认为它可能违反该模式,可以在MVVM应用程序中的转换器中使用它。转换器是UI关注的问题。

https://msdn.microsoft.com/en-us/library/system.componentmodel.designerproperties(v=vs.110).aspx