Compartilhar via


Estilos e modelos embutidos

O Windows Presentation Foundation (WPF) fornece objetos Style 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, atributos em XAML que levam os tipos Style e FrameworkTemplate quase sempre fazem referências de recursos a estilos e modelos existentes em vez de definir novos embutidos.

Limitações de estilos embutidos e modelos

Em XAML (Extensible Application Markup Language), as propriedades de estilo e modelo podem tecnicamente ser definidas de duas maneiras. Você pode usar a sintaxe de atributo para fazer referência a um estilo definido dentro de um recurso, por exemplo, <objetoStyle="{StaticResourcemyResourceKey}" .../>. Ou você pode usar a sintaxe de 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 diretamente no elemento e não em recursos está necessariamente limitado a esse elemento e não pode ser facilmente reutilizado porque não possui uma chave de recurso. Em geral, um estilo definido por recursos é mais versátil e útil e está mais de acordo com o princípio geral do modelo de programação do WPF (Windows Presentation Foundation) de separar a lógica do programa no código do design na marcação.

Normalmente, não há motivo 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 dá suporte a uma propriedade de conteúdo e a um modelo de conteúdo. Se você estiver usando apenas uma árvore lógica criada por meio de estilização ou modelagem de templates uma vez, seria ainda mais fácil preencher essa propriedade de conteúdo com os elementos filho equivalentes diretamente no código. Isso ignoraria completamente 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.

Consulte também