Dela via


Inbäddade stilar och mallar

Windows Presentation Foundation (WPF) tillhandahåller Style objekt och mallobjekt (FrameworkTemplate underklasser) som ett sätt att definiera det visuella utseendet på ett element i resurser, så att de kan användas flera gånger. Därför gör attribut i XAML som tar typerna Style och FrameworkTemplate nästan alltid resursreferenser till befintliga format och mallar istället för att definiera nya direkt.

Begränsningar för infogade format och mallar

I XAML (Extensible Application Markup Language) kan egenskaper för format och mall tekniskt anges på något av två sätt. Du kan använda attributsyntax för att referera till ett format som har definierats i en resurs, till exempel <objektStyle="{StaticResourcemyResourceKey}" .../>. Eller så kan du använda egenskapselementsyntax för att definiera en in-line stil, till exempel:

< objekt>

< objekt.Style>

< Style .../>

</ objekt.Style>

</ objekt>

Attributanvändningen är mycket vanligare. En stil som definieras direkt i ett element och inte i resurser är nödvändigtvis begränsad till endast det innehållande elementet, och kan inte återanvändas lika enkelt eftersom den saknar en resursnyckel. I allmänhet är en resursdefinierad stil mer mångsidig och användbar, och är mer i linje med den allmänna programmeringsmodellprincipen för Windows Presentation Foundation (WPF) för att separera programlogik i kod från design i markering.

Vanligtvis finns det ingen anledning att ange ett format eller en mall inbäddat, även om du bara tänker använda det formatet eller mallen på den platsen. De flesta element som kan använda en formatmall eller mall stöder också en innehållsegenskap och en innehållsmodell. Om du bara använder det logiska träd som du skapar genom styling eller mallning en gång, skulle det vara ännu enklare att bara fylla innehållsegenskapen med motsvarande underordnade element direkt i koden. Detta skulle kringgå format- och mallmekanismerna helt och hållet.

Andra syntaxer som aktiveras av markeringstillägg som returnerar ett objekt är också möjliga för formatmallar och mallar. Två sådana tillägg som har möjliga scenarier är TemplateBinding och Binding.

Se även