Windows Presentation Foundation(WPF) CodePlexプロジェクトのExpressionDarkテーマを適用しようとしています。
サブフォルダーにファイルを追加し、このファイルを参照するようにファイルを変更ExpressionDark.xaml
しました。Themes
App.xaml
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary
Source="Themes/ExpressionDark.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
プログラムを実行すると、スタイルはすべてのコントロールに適用されますが、ウィンドウ自体には適用されません。ウィンドウの背景は白のままです。私が理解しているのは、スタイルはクラスには適用されますがWindow
、派生クラスには適用されないということです。
app.xaml
この問題を回避するために、カスタムウィンドウクラスのWindowsスタイルを継承するために、ファイルに新しいスタイルを作成しようとしました。
<Application.Resources>
<ResourceDictionary>
<Style
TargetType="{x:Type local:MainWindow}"
BasedOn="{StaticResource {x:Type Window}}" />
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary
Source="Themes/ExpressionDark.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
結果は厳密に同じです。
また、 WPF:Adventures in Theming(Part 2)からのアドバイスも試しました。ウィンドウ定義に追加しました:
<Window
x:Class="MyProject.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:MyProject.ViewModel"
Title="MainWindow"
Height="350"
Width="525"
Style="{DynamicResource {x:Type Window}}" />
これ以上の成功はありません。
何が欠けている?
PS:それが重要かどうかはわかりませんが、私のウィンドウの子はグリッドです。