"Edit a Copy" を使用して Blend で標準の WPF コントロールのデフォルトのスタイル/コントロールテンプレートを変更せずに (if のローカル コピーを作成するだけで)オーバーライドすると、一部のシナリオで既にテーマが壊れますか? 言い換えれば、異なるテーマは、標準コントロールに対して異なるコントロール テンプレートやスタイル定義を提供しますか? スタイル/コントロール テンプレートがテーマを尊重していることを確認するにはどうすればよいですか?
2 に答える
開発者は、機能の観点からコントロールを作成したいと考えています。どこでもデフォルトのコントロール スタイルを使用します。その後、グラフィック デザインの側面はプロにお任せください。コントロールの ControlTemplate をオーバーライドする場合、既にテーマ設定で忙しくしています。
ControlTemplates をいじくりまわす場合は、標準的なアプローチを試してみてください。そうしないと、グラフィック デザイナーがアプリケーションの作業を開始すると、彼/彼女はあなたに誓います :)
テーマは、個々のコントロールを対象とし、そのルック アンド フィールを再定義するスタイルのコレクションです。ControlTemplate を提供したコントロールは、それが適用されていないか、テーマ パックと一貫性がありません (x:Name でテーマにアクセスするか、タイプでテーマにアクセスするかによって異なります)。
ただし、DataTemplates をオーバーライドしても問題ありません。これは、テーマの干渉を心配することなく安全に行うことができます.
はい、これはテーマを壊します。
はい、異なるテーマは異なるコントロール スタイルを提供します。MS Blend をお持ちの場合は、Blend のフォルダー (例: C:\Program Files\Microsoft Expression\Blend 3\SystemThemes\Wpf ) にあります。
テーマを尊重するには、コントロールのテーマごとに 1 つのスタイルも作成する必要があります。カスタム コントロールとテーマのサポートに関する多くのリソースがあります。1つだけ言及します:WPF:システムテーマに基づいてコントロールスタイルを変更する