WPF でアプリケーション全体をスキンするための推奨される方法は何ですか?

StackOverflow https://stackoverflow.com/questions/120914

質問

特定の XAML テンプレートを適用して、WPF アプリケーションをスキン可能にし、動的コントロールやビジュアル/論理ツリーにさえ含まれていないコントロールであっても、変更をアプリケーション全体に適用したいと考えています。

この種の機能を実現するには何を使用できますか?この特定のタスクをどのように実行できるかを示す優れたリソースやチュートリアルはありますか?

役に立ちましたか?

解決

基本的なアプローチは、アプリケーション全体でリソースを使用し、実行時にリソースを動的に置き換えることです。

見る http://www.nablasoft.com/alkampfer/index.php/2008/05/22/simple-skinnable-and-theme-management-in-wpf-user-interface/ 基本的なアプローチについては

他のヒント

リソースの置き換えも機能しますが、「構造的スキニング」の方が強力であることがわかりました。詳細については、CodeProject をご覧ください...

http://www.codeproject.com/KB/WPF/podder1.aspx

テンプレートキーを使用せずに、すべてのコントロールに汎用テンプレートを適用する方法を見つけました。解決策は、コントロールのタイプをスタイル キーとして使用することです。

例:

 <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 プロパティを静的リソースまたは動的リソースとして宣言していなくても、スタイルはボタン タイプのすべてのコントロールに適用されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top