Estilos e Templates in-line
Windows Presentation Foundation (WPF) fornece objetos Style e objetos templates (subclasses de FrameworkTemplate) como uma maneira definir a aparência visual de um elemento em recursos, de modo que eles possam ser usados várias vezes. Por esse motivo, atributos no XAML que levam os tipos Style e FrameworkTemplate quase sempre fazem referências de recurso a estilos e templates existentes em vez de definir novos in-line.
Limitações dos estilos e templates in-line
No Extensible Application Markup Language (XAML), propriedades de estilo e template tecnicamente podem ser definidas em uma das duas maneiras. You can use attribute syntax to reference a style that was defined within a resource, for example <object Style="{StaticResource myResourceKey}" .../>. Ou você pode usar a sintaxe da propriedade elemento para definir um estilo in-line, por exemplo:
<object>
<object.Style>
<Style .../>
</object.Style>
</object>
O uso do atributo é muito mais comum. Um estilo que é definido in-line e não definido em recursos é necessariamente delimitado somente ao elemento que o contém, e não pode ser reutilizado tão facilmente porque ele não tem uma chave de recurso. Em geral um estilo definido pelo recurso é mais versátil e útil, e está mais em sintonia com o princípio de modelo de programação geral em Windows Presentation Foundation (WPF) de separar lógica de programação em código de design na marcação.
Geralmente não há nenhum motivo para definir um estilo ou template inline, mesmo se você pretende usar esse estilo ou template naquele local somente. A maioria dos elementos que podem levar um estilo ou template também oferecem suporte a uma propriedade de conteúdo e um modelo de conteúdo. Se você estiver somente usando qualquer árvore lógica que você cria através de estilos ou templating uma vez, seria ainda mais fácil somente preencher essa propriedade de conteúdo com os elementos filhos equivalentes na marcação direta. Isso seria ignorar os mecanismos de estilo e template totalmente.
Outras sintaxes ativadas por extensões de marcação que retornam um objeto também são possíveis para os estilos e templates. Duas destas extensões que têm possíveis cenários incluem TemplateBinding e Binding.