テーマ全体を作成せずに、アプリケーションのカスタム ルック アンド フィールを作成しようとしています。デフォルトのウィンドウと次の App.xaml を使用して WPF 4.5 アプリケーションを作成しました
<Application x:Class="WpfBGTest.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<Style TargetType="Window">
<Setter Property="Background" Value="Yellow" />
</Style>
</Application.Resources>
</Application>
そして完全にデフォルトのウィンドウコード
<Window x:Class="WpfBGTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
</Grid>
</Window>
これを行うと、デザイン タイムで Window.xaml が黄色であることがわかります。しかし、アプリケーションを実行すると、ウィンドウは黄色を失い、灰色に戻ります (現在のウィンドウのテーマ?)
そこで何が起こるの?すべてのコントロールに明示的な StaticResource マークアップを配置せずにアプリケーションをカスタマイズするにはどうすればよいですか? My Style にはターゲット タイプがあり、キーはありません。設計時間がランタイムとそれほど異なる理由がわかりません。
マージされた辞書の問題については十分に読みましたが、上記のコードは基本的に 1 つのスタイルのバニラ WPF アプリです。
編集: Snoop を使用して、取得する背景を決定するときに DefaultStyle が使用されていることを確認しました。しかし、なぜ?依存関係プロパティの優先順位リストを見る: http://msdn.microsoft.com/en-us/library/ms743230.aspx私のアプリケーション スタイルは、既定のスタイルの直前に選択する必要があります。