Pergunta

Eu quero meu aplicativo WPF para ser skinnable, através da aplicação de um determinado modelo de XAML, e as mudanças que ser ampla aplicação, mesmo para controles dinâmicos ou controles que não estão ainda na árvore visual / lógica.

O que eu posso usar para realizar este tipo de funcionalidade? Há algum bons recursos ou tutoriais que mostram como esta tarefa específica pode ser feito?

Foi útil?

Solução

A abordagem básica para tomar está usando todos os recursos através de sua aplicação e substituir dinamicamente os recursos em tempo de execução.

Veja http://www.nablasoft.com/alkampfer/index.php/2008/05/22/simple-skinnable-and-theme-management-in-wpf-user-interface/ para a abordagem básica

Outras dicas

A substituição de recurso vai funcionar, mas eu achei "esfola estrutural" para ser mais poderosa! Leia mais sobre ele em CodeProject ...

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

Eu encontrei a maneira de aplicar modelos genéricos para todos os controles sem o uso de chaves de modelo. A solução é usar o tipo de controle como a chave Style.

Exemplo:

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

aqui a chave estilo é x: Key = "{x: tipo botão}", de modo que o estilo será aplicado a todos os controles de botão tipo sem o controle declarando a propriedade Style para ser um estático ou dinâmico de recursos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top