24

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

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

4

3 に答える 3

10

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

基本的なアプローチについては、http://www.nablasoft.com/alkampfer/index.php/2008/05/22/simple-skinnable-and-theme-management-in-wpf-user-interface/を参照してください。

于 2008-09-23T13:46:35.100 に答える
4

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

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

于 2008-09-23T13:53:37.610 に答える
2

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

例:

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

于 2008-09-24T11:24:29.627 に答える