Jaki jest zalecany sposób skórowania całej aplikacji w WPF?

Chcę, aby moja aplikacja WPF była podatna na skórki, poprzez zastosowanie określonego szablonu XAML, a zmiany miały być szerokie, nawet dla dynamicznych kontrolek lub kontrolek, które nie są nawet w drzewie wizualnym / logicznym.

Co mogę wykorzystać do realizacji tego typu funkcjonalności? Czy są jakieś dobre zasoby lub samouczki, które pokazują, jak można wykonać to konkretne zadanie?

Author: Cœur, 2008-09-23

3 answers

Podstawowym podejściem jest wykorzystanie zasobów w całej aplikacji i dynamiczne zastępowanie zasobów w czasie wykonywania.

Zobacz http://www.nablasoft.com/alkampfer/index.php/2008/05/22/simple-skinnable-and-theme-management-in-wpf-user-interface/{[4]dla podejścia podstawowego

 10
Author: Maurice,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-23 13:46:35

Zastąpienie zasobów zadziała, ale uznałem, że "skórowanie strukturalne" jest bardziej wydajne! Przeczytaj więcej o tym na CodeProject...

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

 4
Author: rudigrobler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-23 13:53:37

Znalazłem sposób, aby zastosować ogólne szablony do wszystkich kontrolek bez użycia kluczy szablonów. Rozwiązaniem jest użycie typu kontrolki jako klucza stylu.

Przykład:

 <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>

Tutaj kluczem stylu jest x: Key= " {X: Type Button}", więc styl zostanie zastosowany do wszystkich kontrolek przycisku typu Bez kontrolki deklarującej właściwość stylu jako statyczny lub dynamiczny zasób.

 2
Author: Pop Catalin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-06 08:36:18