web-dev-qa-db-ja.com

WPFにDesignModeプロパティはありますか?

Winformsで言うことができます

if ( DesignMode )
{
  // Do something that only happens on Design mode
}

wPFにはこのようなものがありますか?

99
Russ

場合によっては、非UIクラスへの呼び出しがデザイナーによって開始されるかどうか(XAMLからDataContextクラスを作成する場合など)を知る必要があります。次に、アプローチ このMSDN記事から が役立ちます。

// Check for design mode. 
if ((bool)(DesignerProperties.IsInDesignModeProperty.GetMetadata(typeof(DependencyObject)).DefaultValue)) 
{
    //in Design mode
}
46
Max Galkin

WPFコントロールWinFormsでホ​​ストの場合、DesignerProperties.GetIsInDesignMode(this)は機能しません。

そこで、私は Microsoft Connectのバグ を作成し、回避策を追加しました。

public static bool IsInDesignMode()
{
    if ( System.Reflection.Assembly.GetExecutingAssembly().Location.Contains( "VisualStudio" ) )
    {
        return true;
    }
    return false;
}
20
serhio

遅い答え、私は知っています-しかし、これをDataTriggerで、または一般的にXAMLのどこでも使用したい人のために:

xmlns:componentModel="clr-namespace:System.ComponentModel;Assembly=PresentationFramework"

<Style.Triggers>
    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, 
                 Path=(componentModel:DesignerProperties.IsInDesignMode)}" 
                 Value="True">
        <Setter Property="Visibility" Value="Visible"/>
    </DataTrigger>
</Style.Triggers>
5