私はwpfテーマと少し混乱しています。Vista、Windows 7、および Windows 8 で wpf 画面を同じように表示したいので、それに応じてコンポーネントのスタイルを設定し、Windows 8 で実行する場合を除いて問題を引き起こしません。たとえば、コンボボックスがあり、このようにxamlでデフォルトの背景を変更します。
<Style TargetType="{x:Type ComboBox}" >
<Setter Property="FontStyle" Value="Normal"/>
<Setter Property="Height" Value="24" />
<Setter Property="Background" Value="{StaticResource GradientButtonBackgroundBrush}"/>
</Style>
コンボボックスの Background プロパティは Windows 8 では効果がなく、右に矢印が付いた平らな四角形しか得られません (デフォルトの Windows 8 コンボボックスで、設計が不十分です!)。
だから、私の質問は、コンボボックスをすべてのバージョンのウィンドウで同じように見せるにはどうすればよいかということです。以下のように App.xaml に Windows Aero テーマを追加しようとしましたが、コンボボックスの表示には影響しません。Aeroテーマを追加した方法は次のとおりです
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/PresentationFramework.Aero;component/themes/aero.normalcolor.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
テーマに関しては、別の疑問もあります。私は、デフォルトで(私が信じている)Aeroテーマが設定されているWindows 7マシンでwpfアプリケーションを構築しています。したがって、Windows 7 マシンで表示した場合、すべてのスタイルは Aero テーマに基づいています。XP などでアプリケーションを実行するとどうなりますか。次に、上記のコードにリストされているように、App.xaml にリソース ディクショナリ (Aero テーマ) のエントリを追加する必要がありますか?
私の質問が少し漠然としていることは承知していますが、私を信じてください。さまざまな Windows バージョンの wpf のデフォルトのテーマと本当に混乱しています。
編集: 必要に応じてコンボボックスをスタイルすることはまだできません。コンボボックスは依然として灰色の長方形のように見えます。
これが私がしたことです。Microsoft のサイトから Aero.NormalColor.xaml をダウンロードし、アプリケーションのテーマ フォルダーに含めました。次に、App.xamlに次を追加しました
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Themes/Aero.NormalColor.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
次に、アプリケーションをコンパイルし、Windows 8 に展開しました。以前に示したものと同じコンボボックスです。他のすべての要素は、テーマに従って適切にスタイル設定されることに注意してください。Luna.Metallic.xaml でも同じことを行い、ComboBoxを除くすべての要素がスタイル設定されます。
ControlTemplateでスタイルを定義する特定のテーマをロードすると、wpf で選択する必要があると思います。Aero (または Luna) コントロール テンプレートを指定した後でもComboBoxだけがその外観を変更しない理由について、私は混乱しています。何か案は ?
EDIT-2 Windows 8 でのコンボボックスの表示のスクリーン ショット