x:FieldModifier-direktiv
Ändrar XAML-kompileringsbeteendet så att fält för namngivna objektreferenser definieras med TypeAttributes.Public åtkomst i stället för TypeAttributes.NotPublic standardbeteende.
XAML-attributanvändning
<object x:FieldModifier="Public".../>
XAML-värden
Värde | Beskrivning |
---|---|
offentliga | Den exakta sträng som du skickar för att ange TypeAttributes.Public jämfört med TypeAttributes.NotPublic varierar beroende på programmeringsspråket bakom koden som används. Se Kommentarer. |
Beroenden
Om en XAML-produktion använder x:FieldModifier
någonstans måste rotelementet i XAML-produktionen deklarera ett x:Klassdirektiv.
Anmärkningar
x:FieldModifier
är inte relevant för att deklarera den allmänna åtkomstnivån för en klass eller dess medlemmar. Det är endast relevant för XAML-bearbetningsbeteende när ett visst XAML-objekt som ingår i en XAML-produktion bearbetas och blir ett objekt som är potentiellt tillgängligt i objektdiagrammet i ett program. Som standard hålls fältreferensen för ett sådant objekt privat, vilket förhindrar att kontrollkonsumenter ändrar objektdiagrammet direkt. I stället förväntas kontrollkonsumenter ändra objektdiagrammet med hjälp av standardmönster som aktiveras av programmeringsmodeller, till exempel genom att hämta layoutroten, de underordnade elementsamlingarna, de dedikerade offentliga egenskaperna och så vidare.
Värdet för attributet x:FieldModifier
varierar beroende på programmeringsspråk och dess syfte kan variera i specifika ramverk. Vilken sträng som ska användas beror på hur varje språk implementerar sina CodeDomProvider och vilka typkonverterare det returnerar för att definiera innebörden för TypeAttributes.Public och TypeAttributes.NotPublicoch om språket är skiftlägeskänsligt.
För C#är strängen som ska skickas för att ange TypeAttributes.Public
public
.För Microsoft Visual Basic .NET är strängen som ska skickas för att ange TypeAttributes.Public
Public
.För C++/CLI finns för närvarande inga mål för XAML. Därför är strängen som ska skickas odefinierad.
Du kan också ange TypeAttributes.NotPublic (internal
i C#, Friend
i Visual Basic) men det är ovanligt att ange TypeAttributes.NotPublic eftersom NotPublic
eftersom beteendet redan är standard.
TypeAttributes.NotPublic är standardbeteendet eftersom det är ovanligt att kod utanför sammansättningen som kompilerade XAML behöver åtkomst till ett XAML-skapat element. WPF-säkerhetsarkitekturen tillsammans med XAML-kompileringsbeteendet deklarerar inte fält som lagrar elementinstanser som offentliga, såvida du inte specifikt anger x:FieldModifier
för att tillåta offentlig åtkomst.
x:FieldModifier
är endast relevant för element med ett x:Name Directive eftersom det namnet används för att referera till fältet när det är offentligt.
Som standard är den partiella klassen för rotelementet offentlig. Du kan dock göra det icke-offentligt med hjälp av x:ClassModifier-direktivet.
x:ClassModifier-direktivet påverkar också åtkomstnivån för instansen av rotelementklassen. Du kan placera både x:Name
och x:FieldModifier
på rotelementet, men detta gör bara en offentlig fältkopia av rotelementet, där den sanna rotelementklassens åtkomstnivå fortfarande styrs av x:ClassModifier-direktivet.
Se även
.NET Desktop feedback