アプリケーションでカスタム テーマを使用したいのですが、私が知る限り、リソース ディクショナリを使用して App.xaml で参照することで実現できます。スタイルは、次のようにデフォルトをオーバーライドします。
<Style TargetType="{x:Type Label">
<Setter Property="Foreground" Value="Green" />
</Style>
デフォルトのラベルスタイルは同じ値で上書きされていると思いますが、ラベルのフォントはすべて緑色です。問題は、あるラベルのスタイルをどこかで再度設定したいときに始まります。このようにグリッド内の他のプロパティを変更したい場合
<Grid.Resources>
<Style TargetType="{x:Type Label">
<Setter Property="FontSize" Value="28" />
</Style>
</Grid.Resources>
グリッド内のすべてのラベルの前景色が失われ、再びデフォルトの色になります (前のステップでデフォルトをオーバーライドしませんでしたか?)。Style
いくつかの試行の後、これを適切に行うには、宣言に別のプロパティを追加する必要がBasedOn={StaticResource {x:Type Label}}"
あり、それが機能することがわかりました。アプリ全体で同じ BasedOn コードを繰り返さなければならないので、これはちょっと奇妙です。たとえば、HTML + CSS スタイルは継承およびマージされ、WPF では置き換えられます...
スタイル コントロールを使用しない場合でも、何らかの方法で外観を取得していることに注意してください (システム テーマ?)。スタイルに追加のコードがなくても、デフォルトで緑色であるべきだと彼らが考えるように、どこか別の場所でデフォルトを探すように指示するにはどうすればよいですか?
BasedOn プロパティの設定を自動化する方法はありますか? それとも、これを全体的に行う方が良いでしょうか?