Modelos e estilos embutidos

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, atributos em XAML que usam os tipos Style e quase sempre fazem referências de recursos a estilos e FrameworkTemplate modelos existentes em vez de definir novos embutidos.

Limitações de estilos e modelos embutidos

Em XAML (Extensible Application Markup Language), as propriedades de estilo e modelo podem ser tecnicamente definidas 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 então, você pode usar a sintaxe de elemento da propriedade para definir um estilo embutido, por exemplo:

<object>

<object.Style>

< Style .../>

</object.Style>

</object>

É muito mais comum usar o atributo. Um estilo que é definido embutido e não definido em recursos terá necessariamente escopos somente para o elemento que o contém, e não poderá ser reutilizado com tanta facilidade, pois não tem nenhuma 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 Windows Presentation Foundation (WPF) de separar a lógica do programa no código do design na marcação.

Geralmente não haverá nenhum motivo para definir um estilo ou modelo embutido, mesmo se você pretender usar esse estilo ou modelo nesse local. A maioria dos elementos que podem assumir um estilo ou modelo também dão suporte a uma propriedade e um modelo de conteúdo. Se você estivesse usando uma árvore lógica criada por meio de estilos ou modelagem, seria ainda mais fácil preencher somente essa propriedade de conteúdo com os elementos filho equivalentes na marcação direta. Isso ignoraria totalmente os mecanismos de estilo e modelo.

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

Confira também