Atrybuty CLR związane z językiem XAML dla typów niestandardowych i bibliotek

W tym temacie opisano atrybuty środowiska uruchomieniowego języka wspólnego (CLR), które są definiowane przez usługi XAML platformy .NET. Opisano również inne atrybuty CLR zdefiniowane na platformie .NET, które mają scenariusz związany z XAML dla aplikacji do zestawów lub typów. Przypisywanie zestawów, typów lub elementów członkowskich z tymi atrybutami CLR zapewnia informacje o systemie typów XAML związane z typami. Informacje są udostępniane każdemu użytkownikowi XAML, który używa usług XAML platformy .NET do przetwarzania strumienia węzła XAML bezpośrednio lub za pośrednictwem dedykowanych czytników XAML i składników zapisywania XAML.

Użycie atrybutów CLR wiąże się z używaniem ogólnej clR do definiowania typów, w przeciwnym razie takie atrybuty nie są dostępne. Jeśli używasz środowiska CLR do definiowania kopii zapasowej typu, domyślny kontekst schematu XAML używany przez moduły zapisywania XAML usług .NET może odczytywać przypisanie CLR poprzez odbicie względem zestawów zapasowych.

W poniższych sekcjach opisano atrybuty związane z językiem XAML, które można zastosować do typów niestandardowych lub niestandardowych elementów członkowskich. Każdy atrybut CLR komunikuje informacje istotne dla systemu typów XAML. W ścieżce ładowania informacje przypisane pomagają czytnikowi XAML utworzyć prawidłowy strumień węzła XAML lub pomóc składnikowi zapisywania XAML utworzyć prawidłowy graf obiektu. W ścieżce zapisywania informacje przypisane pomagają czytnikowi XAML utworzyć prawidłowy strumień węzła XAML, który rekonstytuuje informacje o systemie typu XAML; lub deklaruje wskazówki serializacji lub wymagania dla składnika zapisywania XAML lub innych odbiorców XAML.

Ambientattribute

Dokumentacja referencyjna:AmbientAttribute

Dotyczy: elementy członkowskie klasy, właściwości lub get akcesoriów, które obsługują dołączane właściwości.

Argumenty: Brak

AmbientAttribute wskazuje, że właściwość lub wszystkie właściwości, które przyjmują typ atrybutu, powinny być interpretowane w ramach koncepcji właściwości otoczenia w języku XAML. Koncepcja otoczenia odnosi się do sposobu, w jaki procesory XAML określają właścicieli typów elementów członkowskich. Właściwość otoczenia jest właściwością, w której wartość ma być dostępna w kontekście analizatora podczas tworzenia grafu obiektu, ale gdzie typowe wyszukiwanie składowe typu jest zawieszone dla natychmiastowego tworzonego zestawu węzłów XAML.

Koncepcję otoczenia można zastosować do dołączanych elementów członkowskich, które nie są reprezentowane jako właściwości pod względem sposobu definiowania AttributeTargetsprzypisania CLR. Użycie przypisania metody powinno być stosowane tylko dla get metody dostępu, która obsługuje dołączane użycie dla języka XAML.

Constructorargumentattribute

Dokumentacja referencyjna:ConstructorArgumentAttribute

Dotyczy: Klasa

Argumenty: ciąg określający nazwę właściwości zgodnej z pojedynczym argumentem konstruktora.

ConstructorArgumentAttribute określa, że obiekt można zainicjować przy użyciu składni konstruktora bez parametrów, a właściwość określonej nazwy dostarcza informacje o konstrukcji. Te informacje są przeznaczone głównie do serializacji XAML. W celu uzyskania więcej informacji, zobacz następujący temat: ConstructorArgumentAttribute.

Contentpropertyattribute

Dokumentacja referencyjna:ContentPropertyAttribute

Dotyczy: Klasa

Argumenty: ciąg określający nazwę elementu członkowskiego typu przypisanego.

ContentPropertyAttribute wskazuje, że właściwość o nazwie przez argument powinna służyć jako właściwość zawartości XAML dla tego typu. Definicja właściwości zawartości XAML dziedziczy wszystkie typy pochodne, które można przypisać do typu definiującego. Możesz zastąpić definicję określonego typu pochodnego, stosując ContentPropertyAttribute się do określonego typu pochodnego.

Dla właściwości, która służy jako właściwość zawartości XAML, tagowanie elementu właściwości dla właściwości można pominąć w użyciu XAML. Zazwyczaj wyznaczasz właściwości zawartości XAML, które promują usprawnione znaczniki XAML dla zawartości i modeli zawierających. Ponieważ jako właściwość zawartości XAML można wyznaczyć tylko jeden element członkowski, czasami można wybrać projekt, aby określić, które z kilku właściwości kontenera typu należy wyznaczyć jako właściwość zawartości XAML. Inne właściwości kontenera muszą być używane z jawnymi elementami właściwości.

W strumieniu węzła XAML właściwości zawartości XAML nadal tworzą StartMember węzły i EndMember używają nazwy właściwości .XamlMember Aby określić, czy element członkowski jest właściwością zawartości XAML, sprawdź XamlType wartość z StartObject pozycji i uzyskaj wartość ContentProperty.

Contentwrapperattribute

Dokumentacja referencyjna:ContentWrapperAttribute

Dotyczy: Klasa, w szczególności typy kolekcji.

Argumenty: argument Type określający typ, który określa typ, który ma być używany jako typ otoki zawartości dla zawartości obcej.

ContentWrapperAttribute określa co najmniej jeden typ skojarzonej kolekcji, który będzie używany do opakowania zawartości obcej. Zawartość zagraniczna odnosi się do przypadków, w których ograniczenia systemowe typu dla typu właściwości zawartości nie przechwytują wszystkich możliwych przypadków zawartości, które będą obsługiwane przez użycie XAML dla typu będącego właścicielem. Na przykład obsługa języka XAML dla zawartości określonego typu może obsługiwać ciągi w silnie typizowanej generycznej Collection<T>. Otoki zawartości są przydatne do migrowania istniejących konwencji znaczników do koncepcji wartości możliwych do przypisania dla kolekcji, takich jak migrowanie kon tryb namiotu ls związanych z tekstem.

Aby określić więcej niż jeden typ otoki zawartości, należy wielokrotnie stosować atrybut.

Dependsonattribute

Dokumentacja referencyjna:DependsOnAttribute

Dotyczy: Właściwość

Argumenty: ciąg określający nazwę innego elementu członkowskiego typu przypisanego.

DependsOnAttribute wskazuje, że właściwość atrybutu zależy od wartości innej właściwości. Zastosowanie tego atrybutu do definicji właściwości gwarantuje, że właściwości zależne są przetwarzane najpierw w zapisie obiektu XAML. Użycie określania DependsOnAttribute wyjątkowych przypadków właściwości dla typów, w których należy wykonać określoną kolejność analizowania w celu prawidłowego utworzenia obiektu.

Do definicji właściwości można zastosować wiele DependsOnAttribute przypadków.

Markupextensionreturntypeattribute

Dokumentacja referencyjna:MarkupExtensionReturnTypeAttribute

Dotyczy: Klasa, która ma być typem pochodnym MarkupExtension .

Argumenty: Argumenty Type , które określają najbardziej precyzyjny typ oczekiwany w ProvideValue wyniku atrybutu MarkupExtension.

Aby uzyskać więcej informacji, zobacz Markup Extensions for XAML Overview (Rozszerzenia znaczników dla języka XAML — omówienie).

Namescopepropertyattribute

Dokumentacja referencyjna:NameScopePropertyAttribute

Dotyczy: Klasa

Argumenty: obsługuje dwie formy przypisywania:

  • Ciąg określający nazwę właściwości typu przypisanego.

  • Ciąg określający nazwę właściwości i Type typ definiujący nazwaną właściwość. Ten formularz służy do określania dołączanego elementu członkowskiego jako właściwości namescope XAML.

NameScopePropertyAttribute Określa właściwość, która udostępnia wartość zakresu nazw XAML dla klasy przypisanej. Właściwość XAML namescope ma odwoływać się do obiektu, który implementuje INameScope i przechowuje rzeczywisty zakres nazw XAML, jego magazyn i jego zachowanie.

Runtimenamepropertyattribute

Dokumentacja referencyjna:RuntimeNamePropertyAttribute

Dotyczy: Klasa

Argumenty: ciąg określający nazwę właściwości nazwy czasu wykonywania dla typu przypisanego.

RuntimeNamePropertyAttributeraportuje właściwość typu przypisanego mapowania na dyrektywę XAML x:Name. Właściwość musi być typu String i musi być odczytywana/zapisywana.

Definicja dziedziczy wszystkie typy pochodne, które można przypisać do typu definiującego. Możesz zastąpić definicję określonego typu pochodnego, stosując RuntimeNamePropertyAttribute się do określonego typu pochodnego.

TrimSurroundingWhitespaceAttribute

Dokumentacja referencyjna:TrimSurroundingWhitespaceAttribute

Dotyczy: typy

Argumenty: Brak.

TrimSurroundingWhitespaceAttribute jest stosowany do określonych typów, które mogą być wyświetlane jako elementy podrzędne w zawartości istotnej dla białych znaków (zawartość przechowywana przez kolekcję, która ma WhitespaceSignificantCollectionAttributewartość ). TrimSurroundingWhitespaceAttribute dotyczy głównie ścieżki zapisywania, ale jest dostępna w systemie typów XAML w ścieżce obciążenia, sprawdzając XamlType.TrimSurroundingWhitespaceelement . Aby uzyskać więcej informacji, zobacz Przetwarzanie białych znaków w języku XAML.

Typeconverterattribute

Dokumentacja referencyjna:TypeConverterAttribute

Dotyczy: Klasa, właściwość, metoda (jedyny przypadek metody XAML jest akcesorem get obsługującym dołączany element członkowski).

Argumenty: the Type of the TypeConverter.

TypeConverterAttribute w kontekście XAML odwołuje się do niestandardowego TypeConverterelementu . Zapewnia to TypeConverter zachowanie konwersji typów dla typów niestandardowych lub elementów członkowskich tego typu.

TypeConverterAttribute Zastosuj atrybut do typu, odwołując się do implementacji konwertera typów. Konwertery typów dla języka XAML można definiować w klasach, strukturach lub interfejsach. Nie trzeba podawać konwersji typów dla wyliczeń, ta konwersja jest włączona natywnie.

Konwerter typów powinien mieć możliwość konwersji z ciągu, który jest używany do atrybutów lub tekstu inicjowania w adiustacji, do zamierzonego typu docelowego. Aby uzyskać więcej informacji, zobacz TypeConverters i XAML.

Zamiast stosować do wszystkich wartości typu, zachowanie konwertera typów dla języka XAML można również ustanowić w określonej właściwości. W takim przypadku stosujesz się TypeConverterAttribute do definicji właściwości (definicji zewnętrznej, a nie do określonych get i set definicji).

Zachowanie konwertera typów dla użycia XAML niestandardowego elementu członkowskiego dołączanego można przypisać, stosując TypeConverterAttributeget metodę dostępu, która obsługuje użycie XAML.

Podobnie jak TypeConverterTypeConverterAttribute , istniał na platformie .NET przed istnieniem XAML, a model konwertera typów służył innym celom. Aby odwołać się do elementu i użyć TypeConverterAttributemetody , musisz ją w pełni zakwalifikować lub podać instrukcję using dla elementu System.ComponentModel. Uwzględnij również zestaw systemowy w projekcie.

UidPropertyAttribute

Dokumentacja referencyjna:UidPropertyAttribute

Dotyczy: Klasa

Argumenty: ciąg odwołujący się do odpowiedniej właściwości według nazwy.

Wskazuje właściwość CLR klasy, która aliasuje dyrektywę x:Uid.

UsableDuringInitializationAttribute

Dokumentacja referencyjna:UsableDuringInitializationAttribute

Dotyczy: Klasa

Argumenty: wartość logiczna. Jeśli jest używany do zamierzonego celu atrybutu, wartość powinna być ustawiona na truewartość .

Wskazuje, czy typ jest kompilowany od góry do góry w dół podczas tworzenia grafu obiektów XAML. Jest to zaawansowana koncepcja, która prawdopodobnie jest ściśle powiązana z definicją modelu programowania. W celu uzyskania więcej informacji, zobacz następujący temat: UsableDuringInitializationAttribute.

Valueserializerattribute

Dokumentacja referencyjna:ValueSerializerAttribute

Dotyczy: Klasa, właściwość, metoda (jedyny przypadek metody XAML jest akcesorem get obsługującym dołączany element członkowski).

Argumenty: A Type , który określa klasy obsługi serializatora wartości do użycia podczas serializacji wszystkich właściwości typu przypisanego lub określonej właściwości atrybutu.

ValueSerializerokreśla klasę serializacji wartości, która wymaga więcej stanu i kontekstu niż w przypadku.TypeConverter ValueSerializer można skojarzyć z dołączanym elementem członkowskim przez zastosowanie atrybutu ValueSerializerAttribute w statycznej get metodzie dostępu dla dołączanego elementu członkowskiego. Serializacja wartości ma również zastosowanie w przypadku wyliczenia, interfejsów i struktur, ale nie dla delegatów.

Whitespacesignificantcollectionattribute

Dokumentacja referencyjna:WhitespaceSignificantCollectionAttribute

Dotyczy: Klasa, w szczególności typy kolekcji, które mają hostować zawartość mieszaną, gdzie białe odstępy wokół elementów obiektów mogą być istotne dla reprezentacji interfejsu użytkownika.

Argumenty: Brak.

WhitespaceSignificantCollectionAttribute wskazuje, że typ kolekcji powinien być przetwarzany jako odstęp znaczący przez procesor XAML, który wpływa na konstrukcję węzłów strumienia XAML w ramach kolekcji. Aby uzyskać więcej informacji, zobacz Przetwarzanie białych znaków w języku XAML.

Xamldeferloadattribute

Dokumentacja referencyjna:XamlDeferLoadAttribute

Dotyczy: Klasa, właściwość.

Argumenty: obsługuje dwa typy formularzy atrybucji jako ciągi lub typy jako Type. Zobacz: XamlDeferLoadAttribute.

Wskazuje, że klasa lub właściwość ma odroczone użycie obciążenia dla języka XAML (na przykład zachowanie szablonu) i zgłasza klasę, która umożliwia odroczenie zachowania i jego typu lokalizacji docelowej/zawartości.

Xamlsetmarkupextensionattribute

Dokumentacja referencyjna:XamlSetMarkupExtensionAttribute

Dotyczy: Klasa

Argumenty: nazywa wywołanie zwrotne.

Wskazuje, że klasa może użyć rozszerzenia znaczników, aby podać wartość dla co najmniej jednej właściwości, i odwołuje się do procedury obsługi, którą składnik zapisywania XAML powinien wywołać przed wykonaniem operacji zestawu rozszerzeń znaczników na dowolnej właściwości klasy.

Xamlsettypeconverterattribute

Dokumentacja referencyjna:XamlSetTypeConverterAttribute

Dotyczy: Klasa

Argumenty: nazywa wywołanie zwrotne.

Wskazuje, że klasa może użyć konwertera typów, aby podać wartość dla co najmniej jednej właściwości, i odwołuje się do procedury obsługi, którą składnik zapisywania XAML powinien wywołać przed wykonaniem operacji zestawu konwertera typów na dowolnej właściwości klasy.

Xmllangpropertyattribute

Dokumentacja referencyjna:XmlLangPropertyAttribute

Dotyczy: Klasa

Argumenty: ciąg, który określa nazwę właściwości do aliasu xml:lang dla typu przypisanego.

XmlLangPropertyAttribute raportuje właściwość typu przypisanego, który mapuje się na dyrektywę XML lang . Właściwość nie musi być typu String , ale musi być przypisywana z ciągu (przypisanie można wykonać przez skojarzenie konwertera typów z typem właściwości lub z określoną właściwością). Właściwość musi być odczytywana/zapisywana.

Scenariusz mapowania xml:lang polega na tym, że model obiektów środowiska uruchomieniowego ma dostęp do informacji o języku określonym w formacie XML bez konkretnego przetwarzania za pomocą elementu XMLDOM.

Definicja dziedziczy wszystkie typy pochodne, które można przypisać do typu definiującego. Możesz zastąpić definicję określonego typu pochodnego, stosując XmlLangPropertyAttribute się do określonego typu pochodnego, chociaż jest to nietypowy scenariusz.

W poniższych sekcjach opisano atrybuty związane z językiem XAML, które nie są stosowane do typów lub definicji składowych, ale zamiast tego są stosowane do zestawów. Te atrybuty są istotne dla ogólnego celu definiowania biblioteki zawierającej typy niestandardowe do użycia w języku XAML. Niektóre atrybuty nie muszą mieć bezpośredniego wpływu na strumień węzła XAML, ale są przekazywane do strumienia węzła dla innych użytkowników. Użytkownicy informacji obejmują środowiska projektowe lub procesy serializacji, które wymagają informacji o przestrzeni nazw XAML i skojarzonych informacji o prefiksie. Kontekst schematu XAML (w tym domyślnych usług XAML platformy .NET) używa również tych informacji.

Xmlnscompatiblewithattribute

Dokumentacja referencyjna:XmlnsCompatibleWithAttribute

Argumenty:

  • Ciąg określający identyfikator przestrzeni nazw XAML do podsumowania.

  • Ciąg określający identyfikator przestrzeni nazw XAML, która może podsumowyć przestrzeń nazw XAML z poprzedniego argumentu.

    XmlnsCompatibleWithAttribute określa, że przestrzeń nazw XAML może być subsumowana przez inną przestrzeń nazw XAML. Zazwyczaj podsumowanie przestrzeni nazw XAML jest wskazywane w wcześniej zdefiniowanym XmlnsDefinitionAttributeobiekcie . Ta technika może służyć do przechowywania wersji słownictwa XAML w bibliotece i, aby była zgodna z wcześniej zdefiniowanym znacznikiem względem wcześniejszego słownictwa w wersji.

Xmlnsdefinitionattribute

Dokumentacja referencyjna:XmlnsDefinitionAttribute

Argumenty:

  • Ciąg określający identyfikator przestrzeni nazw XAML do zdefiniowania.

  • Ciąg, który nazywa przestrzeń nazw CLR. Przestrzeń nazw CLR powinna definiować typy publiczne w zestawie, a co najmniej jeden z typów przestrzeni nazw CLR powinien być przeznaczony do użycia XAML.

    XmlnsDefinitionAttribute określa mapowanie dla poszczególnych zestawów między przestrzenią nazw XAML a przestrzenią nazw CLR, która jest następnie używana do rozpoznawania typów przez składnik zapisywania obiektów XAML lub kontekstu schematu XAML.

    Do zestawu można zastosować więcej niż jeden XmlnsDefinitionAttribute . Można to zrobić z dowolnej kombinacji następujących powodów:

  • Projekt biblioteki zawiera wiele przestrzeni nazw CLR dla logicznej organizacji dostępu interfejsu API w czasie wykonywania; jednak chcesz, aby wszystkie typy w tych przestrzeniach nazw były użyteczne dla języka XAML, odwołując się do tej samej przestrzeni nazw XAML. W takim przypadku stosuje się kilka XmlnsDefinitionAttribute atrybutów przy użyciu tej samej XmlNamespace wartości, ale różnych ClrNamespace wartości. Jest to szczególnie przydatne, jeśli definiujesz mapowania dla przestrzeni nazw XAML, że struktura lub aplikacja zamierza być domyślną przestrzenią nazw XAML w typowym użyciu.

  • Projekt biblioteki zawiera wiele przestrzeni nazw CLR i chcesz, aby celowe rozdzielenie przestrzeni nazw XAML między użyciem typów w tych przestrzeniach nazw CLR.

  • Definiujesz przestrzeń nazw CLR w zestawie i chcesz, aby była dostępna za pośrednictwem więcej niż jednej przestrzeni nazw XAML. Ten scenariusz występuje, gdy obsługujesz wiele słownictwa z tą samą bazą kodu.

  • Należy zdefiniować obsługę języka XAML w co najmniej jednej przestrzeni nazw CLR. W takim przypadku XmlNamespace wartość powinna mieć wartość http://schemas.microsoft.com/winfx/2006/xaml.

Xmlnsprefixattribute

Dokumentacja referencyjna:XmlnsPrefixAttribute

Argumenty:

  • Ciąg określający identyfikator przestrzeni nazw XAML.

  • Ciąg określający zalecany prefiks.

    XmlnsDefinitionAttribute określa zalecany prefiks do użycia dla przestrzeni nazw XAML. Prefiks jest przydatny podczas pisania elementów i atrybutów w pliku XAML, który jest serializowany przez usługi XamlXmlWriterXAML platformy .NET, lub gdy biblioteka implementowania XAML wchodzi w interakcję ze środowiskiem projektowym, które ma funkcje edycji XAML.

    Do zestawu można zastosować więcej niż jeden XmlnsPrefixAttribute . Można to zrobić z dowolnej kombinacji następujących powodów:

  • Zestaw definiuje typy dla więcej niż jednej przestrzeni nazw XAML. W tym przypadku zdefiniuj różne wartości prefiksów dla każdej przestrzeni nazw XAML.

  • Obsługujesz wiele słownictwa i używasz różnych prefiksów dla każdego słownictwa i przestrzeni nazw XAML.

  • Należy zdefiniować obsługę języka XAML w zestawie i dla XmlnsDefinitionAttributehttp://schemas.microsoft.com/winfx/2006/xamlelementu . W takim przypadku zazwyczaj należy podwyższyć poziom prefiksu x.

Uwaga

Usługi XAML platformy .NET definiują również atrybut RootNamespaceAttributezwiązany z językiem XAML. Ten atrybut jest atrybutem na poziomie zestawu dla obsługi systemu projektu i nie ma znaczenia dla typów niestandardowych XAML.

Zobacz też