Inlinestijlen en -sjablonen

Windows Presentation Foundation (WPF) biedt Style objecten en sjabloonobjecten (FrameworkTemplate subklassen) als een manier om het uiterlijk van een element in resources te definiëren, zodat ze meerdere keren kunnen worden gebruikt. Daarom verwijzen kenmerken in XAML met de typen Style en FrameworkTemplate bijna altijd naar bestaande stijlen en sjablonen in plaats van nieuwe inline te definiëren.

Beperkingen van inlinestijlen en -sjablonen

In Extensible Application Markup Language (XAML) kunnen stijl- en sjablooneigenschappen technisch gezien op twee manieren worden ingesteld. U kunt de syntaxis van het kenmerk gebruiken om te verwijzen naar een stijl die is gedefinieerd in een resource, bijvoorbeeld <objectStyle="{StaticResourcemyResourceKey}" .../>. U kunt ook de syntaxis van het eigenschapselement gebruiken om een stijl inline te definiëren, bijvoorbeeld:

< Object>

< Object.Style>

< Style .../>

</ Object.Style>

</ Object>

Het kenmerkgebruik is veel gebruikelijker. Een stijl die inline is gedefinieerd en niet in resources is gedefinieerd, is noodzakelijkerwijs beperkt tot het element dat het bevat en kan niet zo eenvoudig opnieuw worden gebruikt omdat er geen resourcesleutel is. In het algemeen is een stijl gedefinieerd door resources veelzijdiger en nuttiger en sluit beter aan bij het principe van het algemene WPF-programmeermodel (Windows Presentation Foundation) van het scheiden van programmalogica in code van ontwerp in mark-up.

Meestal is er geen reden om een stijl of sjabloon inline in te stellen, zelfs als u alleen die stijl of sjabloon op die locatie wilt gebruiken. De meeste elementen die een stijl of sjabloon kunnen gebruiken, ondersteunen ook een inhoudseigenschap en een inhoudsmodel. Als u slechts een logische structuur gebruikt die u maakt via styling of templating, zou het nog eenvoudiger zijn om die inhoudseigenschap te vullen met de equivalente kindelementen in directe mark-up. Hierdoor worden de stijl- en sjabloonmechanismen helemaal overgeslagen.

Andere syntaxis die is ingeschakeld door markeringsextensies die een object retourneren, zijn ook mogelijk voor stijlen en sjablonen. Twee dergelijke extensies met mogelijke scenario's omvatten TemplateBinding- en Binding.

Zie ook