2017-07-28 4 views
0

私はWPFで複雑なバッキングモデル用のフォームを設計しています。フォームコントロールのいくつかは、基礎となるビューモデルに設定されている複数のオプションに依存しているので、彼らは、参考のために、すべての真のなら、私は目に見える何かを例えば明示的にVS2013のデザイン時に可視性を設定/無視しますか?

<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

使用 'DesignerProperties.GetIsInDesignMode(新しいのDependencyObject())'。 – Will

+0

ええ、それはうまくいきます。あなたはコメントであることを意味しましたか? – Glazius

+0

私はまともな正規の質問を見つけることができれば、私はこれを二重(これは完璧で正常です)として閉じたでしょうが、私はできません。だから、私は答えました。 – Will

答えて

1

ただ、その場合は、trueを返し、あなたはデザイナーにいるかどうかを判断するために、あなたの多値コンバータで

DesignerProperties.GetIsInDesignMode(new DependencyObject()) 

を使用して。

MVVMアプリケーションのコンバータでこれを使用しても構いません。コンバータはUIの関心事です。あなたの多値コンバータで

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

関連する問題