2011-09-15 6 views
1

wpfデザイナの設定をいくつか定義できますか? 私は、ユーザーに2つの表示モードを提供したいと考えています: "すべてを境界線で描く"と "ランタイムビュー"。 私のカスタムコンポーネントは、設定を確認し、それに従って適切に描画する必要があります。WPF Designer - ユーザー定義の設定

+0

は、あなたはこれを試みたことがありますか?コードはありますか? –

答えて

1

私は、「DisplayMode」となるDependencyPropertyカスタムコンポーネントを追加するだけで、カスタムコンポーネントが(XamlまたはC#から)プロパティを配置する開発者に依存しますあなたは欲しいですか? XAMLで

public static readonly DependencyProperty DisplayModeProperty = DependencyProperty.Register(
      "DisplayMode", typeof(int), typeof(DisplayModeProperty), new PropertyMetadata(1, OnModeChanged)); 

    public bool DisplayMode 
    { 
     private get { return (bool)GetValue(DisplayModeProperty); } 
     set { SetValue(DisplayModeProperty, value); } 
    } 
    private static void OnModeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
    { 
     ((MyCustomComponent)d).OnModeChanged(e); 
    } 
    private void OnModeChanged(DependencyPropertyChangedEventArgs e) 
    { 
     int mode = Convert.ToInt32(e.NewValue); 
     if(mode == 1) 
     { 
     //... Render for the Mode 1 
     } 
     else 
     { 
     //... Render for the Mode 2 
     } 

    } 

は:

<cust:MyCustomCompoenent DisplayMode="1"/> 
+0

これは1つのコンポーネントで機能しますが、1つの変数を変更したかったので、すべてのコンポーネントに影響します。あなたの提案に基づいて、このプロパティを親コンポーネントに追加し、DisplayModeが変更されると、すべての子が正しい表示モードで再描画されます。 それは動作しますが、私はこれを行う必要はないと思っていました。 – Markus

0

私はStrategy Patternがあなたに役立つと思います。共通の設定を持つ抽象基本クラスを定義し、そこから派生する複数の具象クラスを定義します。各具体的なクラスでは、枠線や枠線、色、テーマなど、いくつかのポリシーを定義します(これも同様にoverrideもあります)。実行時の型が具象クラスの1つになる基本クラス参照を使用して環境設定にアクセスすると、実行時に環境設定を変更できます。