3

現在、(WPF DataGrid に基づいて) カスタム コントロールを作成しています。私がやりたいことは、データグリッドにデフォルトのスタイリングを設定することです。現在、機能する Style プロパティを設定しています。しかし、fx を変更するスタイルを作成すると問題が発生します。メイン アプリケーション app.xaml の背景色。次に、「デフォルト」のスタイリングがすべて失われ、DataGrid は background プロパティが設定されているだけですべて標準に見えます。

デフォルト値を適用したいグリッドの各プロパティで OverrideMetadata を使用しようとしましたが、うまくいきませんでした。また、コンストラクターで各プロパティを設定しようとしましたが、プロパティの優先順位のため、メイン アプリケーションのスタイルは適用されません。

何か案は?

前もって感謝します

4

2 に答える 2

13

staticこれをコンストラクタで設定しましたか?

DefaultStyleKeyProperty.OverrideMetadata(typeof(MyCustomType), new FrameworkPropertyMetadata(typeof(MyCustomType)));

また、リソース スタイルのキーはカスタム コントロールのタイプと同じですか?

TargetType がコントロールに設定されていても、他のキーを設定してはいけません。

アセンブリには、次の属性もマークする必要があります。

[assembly: ThemeInfo(
    //where theme specific resource dictionaries are located
    //(used if a resource is not found in the page, 
    // or application resource dictionaries)
    ResourceDictionaryLocation.None, 

    //where the generic resource dictionary is located
    //(used if a resource is not found in the page, 
    // app, or any theme specific resource dictionaries)
    ResourceDictionaryLocation.SourceAssembly 
)]
于 2009-08-06T14:07:56.707 に答える