1

私が要件に取り組んでいるアプリケーションでは、Windowsテーマ(Aero、Classic、Luna)をサポートする必要があります。

現在のテーマを尊重したいカスタムコントロールがいくつかあります。

テーマフォルダを作成して配置しました

/themes/classic.xaml
/themes/luna.normalcolor.xaml
/themes/aero.normalcolor.xaml
/themes/generic.xaml

カスタムコントロールを含むプロジェクトのAssemblyInfo.csで、ThemeInfoを次のように定義しました。

[assembly: ThemeInfo(
    ResourceDictionaryLocation.SourceAssembly, 
    ResourceDictionaryLocation.SourceAssembly 
)]

Windowsでテーマを変更すると、すべての標準コントロールがテーマを切り替えますが、カスタムコントロールはgeneric.xaml以外からの読み取りを拒否します

ここで明らかな何かが欠けていますか?

4

1 に答える 1

1

確認事項:

  1. 大文字が重要かどうかはわかりませんが、通常は「Themes/Aero.NormalColor.xaml」などと表示されます。

  2. XAML ファイルのビルド アクションが「ページ」であることを確認します。これを行うには、それらを選択して F4 を押します。

  3. アプリケーションが実行されている場合、テーマは切り替わりません。ほとんどのネイティブ WPF コントロールは SystemColors クラスを利用します。つまり、テーマが変更されると色が変わる可能性がありますが、Style/ControlTemplate は変更されません。

これらが役に立たない場合は、カスタム コントロールが DefaultStyleProperty とサンプル スタイルをオーバーライドする方法など、追加のコードを投稿する必要があるでしょう。

于 2011-03-10T15:15:23.190 に答える