WPF でアプリケーション全体をスキンするための推奨される方法は何ですか?
質問
特定の XAML テンプレートを適用して、WPF アプリケーションをスキン可能にし、動的コントロールやビジュアル/論理ツリーにさえ含まれていないコントロールであっても、変更をアプリケーション全体に適用したいと考えています。
この種の機能を実現するには何を使用できますか?この特定のタスクをどのように実行できるかを示す優れたリソースやチュートリアルはありますか?
解決
基本的なアプローチは、アプリケーション全体でリソースを使用し、実行時にリソースを動的に置き換えることです。
見る http://www.nablasoft.com/alkampfer/index.php/2008/05/22/simple-skinnable-and-theme-management-in-wpf-user-interface/ 基本的なアプローチについては
他のヒント
リソースの置き換えも機能しますが、「構造的スキニング」の方が強力であることがわかりました。詳細については、CodeProject をご覧ください...
テンプレートキーを使用せずに、すべてのコントロールに汎用テンプレートを適用する方法を見つけました。解決策は、コントロールのタイプをスタイル キーとして使用することです。
例:
<Application.Resources>
<Style x:Key="{x:Type Button}" TargetType="{x:Type Button}">
<Setter Property="Button.Background" Value="CornflowerBlue"/>
<Setter Property="Button.Template">
<Setter.Value>
<ControlTemplate x:Name="MyTemplate">
...
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Application.Resources>
ここで、Style キーは x:Key="{x:Type Button}" であるため、コントロールが Style プロパティを静的リソースまたは動的リソースとして宣言していなくても、スタイルはボタン タイプのすべてのコントロールに適用されます。
所属していません StackOverflow