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 lub Invoker 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.
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".
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".
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.
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.
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.
Współpracuj z nami w serwisie GitHub
Źródło tej zawartości można znaleźć w witrynie GitHub, gdzie można również tworzyć i przeglądać problemy i żądania ściągnięcia. Więcej informacji znajdziesz w naszym przewodniku dla współtwórców.
Opinia o produkcie .NET Desktop feedback
.NET Desktop feedback to projekt typu open source. Wybierz link, aby przekazać opinię:
Dołącz do serii meetup, aby tworzyć skalowalne rozwiązania sztucznej inteligencji oparte na rzeczywistych przypadkach użycia z innymi deweloperami i ekspertami.