Modèles et styles intralignes
Windows Presentation Foundation (WPF) fournit des objets Style et des objets de modèle (sous-classes FrameworkTemplate) pour définir l'apparence visuelle d'un élément dans les ressources, afin qu'ils puissent être utilisés à plusieurs reprises. Pour cette raison, les attributs en XAML qui prennent les types Style et FrameworkTemplate font presque toujours référence aux styles et modèles existant des ressources plutôt que d'en définir de nouveaux intralignes.
Limitations des styles et modèles intralignes
En Extensible Application Markup Language (XAML), vous pouvez techniquement définir les propriétés de style et de modèle de l'une des deux manières suivantes. Vous pouvez utiliser la syntaxe d'attribut pour faire référence à un style défini dans une ressource, par exemple <object Style="{StaticResource myResourceKey}" .../>. Ou bien vous pouvez utiliser la syntaxe de l'élément de propriété pour définir un style intraligne, par exemple :
<object>
<object.Style>
<Style .../>
</object.Style>
</object>
L'utilisation d'attribut est beaucoup plus fréquente. Un style qui est défini intraligne et mais n'est pas paramétré dans les ressources se limite forcément à l'élément contenant et ne peut pas être réutilisé aussi facilement car il n'a aucune clé de ressource. En général, un style défini par une ressource est plus versatile et utile et est plus conforme au principe de modèle de programmation Windows Presentation Foundation (WPF) général, qui consiste à séparer la logique du programme dans le code de la conception dans le balisage.
Aucune raison ne justifie habituellement de définir un style ou un modèle intraligne, même si vous projetez seulement d'utiliser ce style ou modèle à cet emplacement. La plupart des éléments qui peuvent prendre un style ou un modèle prennent également en charge une propriété et un modèle de contenu. Si vous utilisez seulement une arborescence logique créée une fois dans un style ou un modèle, il sera même plus facile de renseigner simplement cette propriété de contenu avec les éléments enfants équivalents dans les balises directes. Vous ignorerez ainsi les mécanismes de style et de modèle.
Il est également possible d'utiliser pour les styles et les modèles d'autres syntaxes activées par les extensions de balisage qui renvoient un objet. Deux extensions associées à des scénarios possibles comprennent TemplateBinding et Binding.