Estilos embutidos e modelos padrão

O Windows Presentation Foundation (WPF) fornece Style objetos e objetos de modelo (FrameworkTemplate subclasses) como uma maneira de definir a aparência visual de um elemento em recursos, para que eles possam ser usados várias vezes. Por esse motivo, os atributos em XAML que usam os tipos Style e FrameworkTemplate quase sempre fazem referências de recursos a estilos e modelos existentes, em vez de definir novos modelos embutidos.

Limitações de estilos e modelos embutidos

Em Extensible Application Markup Language (XAML), as propriedades de estilo e modelo podem ser definidas tecnicamente de duas maneiras. Você pode usar a sintaxe de atributo para fazer referência a um estilo que foi definido dentro de um recurso, por exemplo, <objetoStyle="{StaticResourcemyResourceKey}" .../>. Ou podes usar a sintaxe do elemento de propriedade para definir um estilo inline, por exemplo:

< objeto>

< objeto.Style>

< Style .../>

</ objeto.Style>

</ objeto>

O uso do atributo é muito mais comum. Um estilo que é definido em linha e não definido em recursos é necessariamente definido apenas para o elemento que contém e não pode ser reutilizado tão facilmente porque não tem chave de recurso. Em geral, um estilo definido por recurso é mais versátil e útil, e está mais de acordo com o princípio geral do modelo de programação do Windows Presentation Foundation (WPF) de separar a lógica do programa, escrita em código, do design, representado na marcação.

Normalmente, não há razão para definir um estilo ou modelo embutido, mesmo que você pretenda usar apenas esse estilo ou modelo nesse local. A maioria dos elementos que podem usar um estilo ou modelo também oferece suporte a uma propriedade de conteúdo e a um modelo de conteúdo. Se tu estiveres a usar apenas qualquer árvore lógica que cries através de estilos ou modelos uma única vez, seria ainda mais fácil simplesmente preencher essa propriedade de conteúdo com os elementos filho equivalentes na marcação direta. Isso ignoraria totalmente os mecanismos de estilo e template.

Outras sintaxes habilitadas por extensões de marcação que retornam um objeto também são possíveis para estilos e modelos. Duas dessas extensões que têm cenários possíveis incluem TemplateBinding e Binding.

Ver também