Dela via


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.Publicpublic.

  • För Microsoft Visual Basic .NET är strängen som ska skickas för att ange TypeAttributes.PublicPublic.

  • 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