読者です 読者をやめる 読者になる 読者になる

がりらぼ

WindowsRuntimeの応援ブログ

デザイン時の挙動を変えるには

WindowsRuntime

デザインモード

VisualStudioやBlendなどのデザイナーで編集中はデザインモードが有効化されています。 デザインモードかどうかはDesignModeクラスのDesignModeEnabledプロパティで取得できますが、 MainPage.xaml.csなどにデザイン時の挙動を書いても反映されません。

デザインモードの判定はカスタム型しか適用することができません。 ここで言うカスタム型とは

  • ユーザーコントロール
  • カスタムコントロール
  • コントロールを継承したコントロール

などです。

デザイナーでの挙動を変えてみる

まず適当なユーザーコントロールを作ります。 TextBlockを一つ配置し、ForegroundをBlueにします。

f:id:garicchi:20140501105641p:plain

つづいてユーザーコントロールのコンストラクタでDesignModeを判定し、デザインモードならForegroundをRedにしてみます。

public sealed partial class MyUserControl : UserControl
{
    public MyUserControl()
    {
        this.InitializeComponent();
        if (DesignMode.DesignModeEnabled)
        {
            text.Foreground = new SolidColorBrush(Colors.Red);
        }
    }
}

ここまでできたら一度ビルドをし、MainPage.xamlに戻ってツールボックスを見てみると先ほど作成したユーザーコントロールがあるのがわかります。 これをデザイナーで配置してみるとtextblockは赤色になるため、デザインモード時の挙動が反映されていることがわかります。

f:id:garicchi:20140501105655p:plain

もちろんデバッグしてみると、デザインモードではないのでTextBlockは青色になります。

f:id:garicchi:20140501105707p:plain

デザイン時の挙動を変えるには | garicchi.com