Usługi XAML
W tym temacie opisano możliwości zestawu technologii znanego jako usługi XAML platformy .NET. Większość opisanych usług i interfejsów API znajduje się w zestawie System.Xaml
. Usługi obejmują czytniki i pisarze, klasy schematów i obsługę schematów, fabryki, przypisywanie klas, wewnętrzne wsparcie języka XAML i inne funkcje języka XAML.
Informacje o tej dokumentacji
Dokumentacja koncepcyjna usług XAML platformy .NET zakłada, że masz doświadczenie z językiem XAML i sposób, w jaki może on dotyczyć określonej platformy, na przykład Windows Presentation Foundation (WPF) lub Windows Workflow Foundation lub określonego obszaru funkcji technologii, na przykład funkcji dostosowywania kompilacji w Microsoft.Build.Framework.XamlTypes. Ta dokumentacja nie próbuje wyjaśnić podstaw języka XAML jako języka znaczników, terminologii składni XAML ani innego materiału wprowadzającego. Zamiast tego ta dokumentacja koncentruje się na używaniu usług XAML platformy .NET, które są włączone w bibliotece zestawów System.Xaml. Większość z tych interfejsów API jest przeznaczonych dla scenariuszy integracji języka XAML i rozszerzalności. Może to obejmować dowolny z następujących scenariuszy:
Rozszerzanie możliwości podstawowych czytników XAML lub składników zapisywania XAML (przetwarzanie strumienia węzła XAML bezpośrednio; wyprowadzanie własnego czytnika XAML lub składnika zapisywania XAML).
Definiowanie typów niestandardowych nadających się do użycia w języku XAML, które nie mają określonych zależności struktury, i przypisywanie typów w celu przekazania ich cech systemowych typów XAML do usług XAML platformy .NET.
Hostowanie czytników XAML lub składników zapisywania XAML jako składnika aplikacji, takiego jak projektant wizualizacji lub edytor interaktywny dla źródeł znaczników XAML.
Pisanie konwerterów wartości XAML (rozszerzenia znaczników; konwertery typów dla typów niestandardowych).
Definiowanie niestandardowego kontekstu schematu XAML (przy użyciu alternatywnych technik ładowania zestawów do tworzenia kopii zapasowych źródeł typów; przy użyciu znanych technik wyszukiwania typów zamiast zawsze odzwierciedlać zestawy; przy użyciu załadowanych pojęć zestawów, które nie używają środowiska uruchomieniowego języka wspólnego (CLR)
AppDomain
i skojarzonego z nim modelu zabezpieczeń).Rozszerzanie podstawowego systemu typów XAML.
Używanie technik
Lookup
lubInvoker
w celu wpływania na system typów XAML i sposobu oceniania kopii zapasowych typów.
Jeśli szukasz materiałów wprowadzających w języku XAML jako języka, możesz wypróbować omówienie XAML (WPF .NET). W tym temacie omówiono język XAML dla odbiorców, którzy są nowi zarówno w programie Windows Presentation Foundation (WPF), jak i w celu używania funkcji języka XAML i znaczników XAML. Innym przydatnym dokumentem jest materiał wprowadzający w specyfikacji języka XAML .
Usługi XAML platformy .NET i System.Xaml
w architekturze platformy .NET
Usługi XAML platformy .NET i zestaw System.Xaml
definiują większość elementów potrzebnych do obsługi funkcji języka XAML. Obejmuje to klasy bazowe dla czytników XAML i składników zapisywania XAML. Najważniejszą funkcją dodaną do usług XAML platformy .NET, która nie była obecna w żadnej implementacji XAML specyficznej dla platformy, jest reprezentacja systemu typów dla języka XAML. Reprezentacja systemu typów przedstawia język XAML w obiektowy sposób, który koncentruje się na możliwościach XAML bez podejmowania zależności od określonych możliwości platform.
System typów XAML nie jest ograniczony przez formularz znaczników lub specyfikę czasu wykonywania źródła XAML; nie jest on ograniczony przez jakikolwiek konkretny system typów kopii zapasowych. System typów XAML zawiera reprezentacje obiektów dla typów, elementów członkowskich, kontekstów schematu XAML, pojęć na poziomie XML i innych pojęć języka XAML lub funkcji wewnętrznych XAML. Używanie lub rozszerzanie systemu typów XAML umożliwia uzyskiwanie informacji z klas takich jak czytniki XAML i składniki zapisywania XAML oraz rozszerzanie funkcji reprezentacji XAML na określone funkcje włączone przez strukturę, technologię lub aplikację, która używa lub emituje kod XAML. Koncepcja kontekstu schematu XAML umożliwia praktyczne operacje zapisu grafu obiektów z kombinacji implementacji modułu zapisywania obiektów XAML, systemu typów zapasowych technologii, który jest przekazywany za pośrednictwem informacji o zestawie w kontekście i źródła węzła XAML. Aby uzyskać więcej informacji na temat koncepcji schematu XAML. zobacz domyślny kontekst schematu XAML i kontekst schematu WPF XAML.
Strumienie węzłów XAML, czytniki XAML i składniki zapisywania XAML
Aby zrozumieć rolę, jaką usługi XAML platformy .NET odgrywają w relacji między językiem XAML i konkretnymi technologiami, które używają języka XAML jako języka, warto zrozumieć koncepcję strumienia węzła XAML oraz sposób, w jaki koncepcja ta kształtuje interfejs API i terminologię. Strumień węzła XAML jest koncepcyjnym pośrednim między reprezentacją języka XAML a grafem obiektów, który reprezentuje lub definiuje język XAML.
Czytnik XAML to jednostka, która przetwarza kod XAML w jakiejś formie i generuje strumień węzła XAML. W interfejsie API czytnik XAML jest reprezentowany przez klasę bazową XamlReader.
Składnik zapisywania XAML to jednostka, która przetwarza strumień węzła XAML i tworzy coś innego. W interfejsie API składnik zapisywania XAML jest reprezentowany przez klasę bazową XamlWriter.
Dwa najbardziej typowe scenariusze obejmujące XAML to ładowanie kodu XAML w celu utworzenia wystąpienia grafu obiektów i zapisanie grafu obiektów z aplikacji lub narzędzia i utworzenie reprezentacji XAML (zazwyczaj w postaci znaczników zapisanych jako plik tekstowy). Ładowanie kodu XAML i tworzenie grafu obiektów jest często określane w tej dokumentacji jako ścieżka ładowania. Zapisywanie lub serializowanie istniejącego grafu obiektów w języku XAML jest często określane w tej dokumentacji jako ścieżka zapisu.
Najbardziej typowym typem ścieżki ładowania można opisać w następujący sposób:
Zacznij od reprezentacji XAML w formacie XML zakodowanym w formacie UTF i zapisanym jako plik tekstowy.
Załaduj ten kod XAML do XamlXmlReader. XamlXmlReader jest podklasą XamlReader.
Wynikiem jest strumień węzła XAML. Dostęp do poszczególnych węzłów strumienia węzła XAML można uzyskać przy użyciu interfejsu API XamlXmlReader / XamlReader. Najbardziej typową operacją jest przejście przez strumień węzła XAML, przetwarzanie każdego węzła przy użyciu metafory "bieżącego rekordu".
Przekaż wynikowe węzły ze strumienia węzła XAML do interfejsu API XamlObjectWriter. XamlObjectWriter jest podklasą XamlWriter.
XamlObjectWriter zapisuje graf obiektu, jeden obiekt naraz, zgodnie z postępem za pośrednictwem źródłowego strumienia węzła XAML. Pisanie obiektów odbywa się przy użyciu kontekstu schematu XAML i implementacji, która może uzyskiwać dostęp do zestawów i typów systemu typów zapasowych i struktury.
Wywołaj Result na końcu strumienia węzła XAML, aby uzyskać obiekt główny grafu obiektów.
Najbardziej typowym typem ścieżki zapisywania można opisać w następujący sposób:
Zacznij od wykresu obiektu całego czasu wykonywania aplikacji, zawartości interfejsu użytkownika i stanu czasu wykonywania lub mniejszego segmentu reprezentacji obiektu ogólnej aplikacji w czasie wykonywania.
Z logicznego obiektu początkowego, takiego jak katalog główny aplikacji lub katalog główny dokumentu, załaduj obiekty do XamlObjectReader. XamlObjectReader jest podklasą XamlReader.
Wynikiem jest strumień węzła XAML. Dostęp do poszczególnych węzłów strumienia węzła XAML można uzyskać przy użyciu interfejsu API XamlObjectReader i XamlReader. Najbardziej typową operacją jest przejście przez strumień węzła XAML, przetwarzanie każdego węzła przy użyciu metafory "bieżącego rekordu".
Przekaż wynikowe węzły ze strumienia węzła XAML do interfejsu API XamlXmlWriter. XamlXmlWriter jest podklasą XamlWriter.
XamlXmlWriter zapisuje kod XAML w kodowaniu XML UTF. Można to zapisać jako plik tekstowy, strumień lub w innych formularzach.
Wywołaj Flush, aby uzyskać końcowe dane wyjściowe.
Aby uzyskać więcej informacji na temat pojęć dotyczących strumienia węzłów XAML, zobacz Understanding XAML Node Stream Structures and Concepts (Omówienie struktur i pojęć strumienia węzłów XAML).
Klasa XamlServices
Nie zawsze trzeba radzić sobie ze strumieniem węzła XAML. Jeśli chcesz uzyskać podstawową ścieżkę ładowania lub podstawową ścieżkę zapisywania, możesz użyć interfejsów API w klasie XamlServices.
Różne sygnatury Load implementują ścieżkę ładowania. Możesz załadować plik lub strumień albo załadować XmlReader, TextReader lub XamlReader, które opakowuje dane wejściowe XAML, ładując je za pomocą interfejsów API tego czytnika.
Różne sygnatury Save zapisać graf obiektu i wygenerować dane wyjściowe jako strumień, plik lub XmlWriter/TextWriter wystąpienie.
Transform konwertuje kod XAML, łącząc ścieżkę ładowania i ścieżkę zapisywania jako pojedynczą operację. Inny kontekst schematu lub inny system typów kopii zapasowych może służyć do XamlReader i XamlWriter, co wpływa na sposób przekształcania wynikowego kodu XAML.
Aby uzyskać więcej informacji na temat używania XamlServices, zobacz klasa XAMLServices i podstawowy odczyt XAML lub pisanie.
System typów XAML
System typów XAML udostępnia interfejsy API wymagane do pracy z danym pojedynczym węzłem strumienia węzła XAML.
XamlType jest reprezentacją obiektu — to, co przetwarzasz między węzłem obiektu początkowego a węzłem obiektu końcowego.
XamlMember jest reprezentacją elementu członkowskiego obiektu — to, co przetwarzasz między węzłem początkowym elementu członkowskiego a węzłem końcowym.
Interfejsy API, takie jak GetAllMembers i GetMember i DeclaringType raportują relacje między XamlType i XamlMember.
Domyślne zachowanie systemu typów XAML implementowane przez usługi .NET XAML jest oparte na środowisku uruchomieniowym języka wspólnego (CLR) i statycznej analizie typów CLR w zestawach przy użyciu odbicia. W związku z tym w przypadku określonego typu CLR domyślna implementacja systemu typów XAML może uwidocznić schemat XAML tego typu i jego składowych oraz zgłosić go pod względem systemu typów XAML. W domyślnym systemie typów XAML koncepcja przypisywania typów jest mapowana na dziedziczenie CLR, a koncepcje wystąpień, typów wartości itd. są również mapowane na zachowania pomocnicze i funkcje środowiska CLR.
Dokumentacja funkcji języka XAML
Aby obsługiwać język XAML, usługi XAML platformy .NET zapewniają konkretną implementację pojęć języka XAML zdefiniowanych dla przestrzeni nazw XAML języka XAML. Są one udokumentowane jako określone strony referencyjne. Funkcje języka są udokumentowane z punktu widzenia zachowania tych funkcji języka w przypadku ich przetwarzania przez czytnik XAML lub składnik zapisywania XAML zdefiniowany przez usługi XAML platformy .NET. Aby uzyskać więcej informacji, zobacz przestrzeni nazw XAML (x:) Funkcje językowe.
.NET Desktop feedback