Typy migrowane z WPF do System.Xaml
W programach .NET Framework 3.5 i .NET Framework 3.0 zarówno Windows Presentation Foundation (WPF) i Windows Workflow Foundation zawierały implementację języka XAML. Wiele typów publicznych, które zapewniały rozszerzalność implementacji WPF XAML istniały w zestawach WindowsBase, PresentationCore i PresentationFramework. Podobnie w zestawie System.Workflow.ComponentModel istniały typy publiczne, które zapewniały rozszerzalność kodu XAML programu Windows Workflow Foundation. W programie .NET Framework 4 niektóre typy związane z językiem XAML zostały zmigrowane do zestawu System.Xaml. Wspólna implementacja platformy .NET Framework usług językowych XAML umożliwia korzystanie z wielu scenariuszy rozszerzalności XAML, które zostały pierwotnie zdefiniowane przez implementację XAML określonej platformy, ale są teraz częścią ogólnej obsługi języka XAML programu .NET Framework 4. W tym artykule wymieniono typy, które zostały zmigrowane, i omówiono problemy związane z migracją.
Zestawy i przestrzenie nazw
W programach .NET Framework 3.5 i .NET Framework 3.0 typy zaimplementowane do obsługi języka XAML były ogólnie dostępne w System.Windows.Markup przestrzeni nazw. Większość z tych typów znajdowała się w zestawie WindowsBase.
W programie .NET Framework 4 istnieje nowa System.Xaml przestrzeń nazw i nowy zestaw System.Xaml. Wiele typów, które zostały pierwotnie zaimplementowane dla WPF XAML, są teraz udostępniane jako punkty rozszerzalności lub usługi dla dowolnej implementacji XAML. W ramach udostępniania ich dla bardziej ogólnych scenariuszy typy są przekazywane z oryginalnego zestawu WPF do zestawu System.Xaml. Umożliwia to scenariusze rozszerzalności XAML bez konieczności dołączania zestawów innych struktur (takich jak WPF i Windows Workflow Foundation).
W przypadku zmigrowanych typów większość typów pozostaje w System.Windows.Markup przestrzeni nazw. Częściowo w celu uniknięcia przerwania mapowań przestrzeni nazw CLR w istniejących implementacjach na plik. W związku z tym System.Windows.Markup przestrzeń nazw w programie .NET Framework 4 zawiera kombinację ogólnych typów obsługi języka XAML (z zestawu System.Xaml) i typów specyficznych dla implementacji XAML WPF (z systemu WindowsBase i innych zestawów WPF). Każdy typ, który został zmigrowany do system.Xaml, ale istniał wcześniej w zestawie WPF, ma obsługę przekazywania typów w wersji 4 zestawu WPF.
Typy obsługi XAML przepływu pracy
Program Windows Workflow Foundation udostępniał również typy obsługi XAML, a w wielu przypadkach miały identyczne krótkie nazwy z odpowiednikiem WPF. Poniżej znajduje się lista typów obsługi XAML programu Windows Workflow Foundation:
Te typy obsługi nadal istnieją w zestawach programu Windows Workflow Foundation dla programu .NET Framework 4 i mogą być nadal używane dla określonych aplikacji programu Windows Workflow Foundation; nie powinny jednak być przywołyne przez aplikacje ani struktury, które nie korzystają z programu Windows Workflow Foundation.
MarkupExtension
W programie .NET Framework 3.5 i .NET Framework 3.0 MarkupExtension klasa dla platformy WPF znajdowała się w zestawie WindowsBase. Klasa równoległa dla programu Windows Workflow Foundation istniała MarkupExtensionw zestawie System.Workflow.ComponentModel. W programie .NET Framework 4 MarkupExtension klasa jest migrowana do zestawu System.Xaml. W programie .NET Framework 4 MarkupExtension jest przeznaczony dla każdego scenariusza rozszerzalności XAML, który korzysta z usług .NET XAML, a nie tylko dla tych, które opierają się na określonych strukturach. Jeśli to możliwe, określone struktury lub kod użytkownika w strukturze powinny również opierać się na MarkupExtension klasie rozszerzenia XAML.
MarkupExtension , klasy usług pomocniczych
Programy .NET Framework 3.5 i .NET Framework 3.0 dla platformy WPF udostępniały kilka usług, które były dostępne dla MarkupExtension implementatorów i TypeConverter implementacji w celu obsługi użycia typu/właściwości w języku XAML. Te usługi są następujące:
Uwaga
Inną usługą z programu .NET Framework 3.5, która jest powiązana z rozszerzeniami znaczników, jest IReceiveMarkupExtension interfejs. IReceiveMarkupExtension nie został zmigrowany i jest oznaczony [Obsolete]
jako .NET Framework 4. Scenariusze, które były wcześniej używane IReceiveMarkupExtension , powinny zamiast tego używać XamlSetMarkupExtensionAttribute wywołań zwrotnych atrybutów. AcceptedMarkupExtensionExpressionTypeAttribute jest również oznaczony jako [Obsolete]
.
Funkcje języka XAML
W zestawie PresentationFramework istniało kilka funkcji i składników języka XAML dla platformy WPF. Zostały one zaimplementowane jako podklasa MarkupExtension , aby uwidocznić użycie rozszerzeń znaczników w znaczników XAML. W programie .NET Framework 4 istnieją one w zestawie System.Xaml, dzięki czemu projekty, które nie zawierają zestawów WPF, mogą korzystać z tych funkcji na poziomie języka XAML. WPF używa tych samych implementacji dla aplikacji .NET Framework 4. Podobnie jak w przypadku innych przypadków wymienionych w tym temacie, typy pomocnicze nadal istnieją w System.Windows.Markup przestrzeni nazw, aby uniknąć przerywania poprzednich odwołań.
Poniższa tabela zawiera listę klas obsługi funkcji XAML zdefiniowanych w pliku System.Xaml.
Funkcja języka XAML | Użycie |
---|---|
ArrayExtension | <x:Array ...> |
NullExtension | {x:Null} |
StaticExtension | {x:Static ...} |
TypeExtension | {x:Type ...} |
Mimo że system.Xaml może nie mieć określonych klas obsługi, ogólna logika przetwarzania funkcji języka XAML dla języka XAML znajduje się teraz w system.Xaml i zaimplementowanych czytnikach XAML i składnikach zapisywania XAML. Na przykład x:TypeArguments
jest to atrybut, który jest przetwarzany przez czytniki XAML i składniki zapisywania XAML z implementacji System.Xaml. Można go zauważyć w strumieniu węzłów XAML, ma obsługę w domyślnym kontekście schematu XAML (opartym na clR), ma reprezentację systemu typów XAML itd. Aby uzyskać więcej informacji na temat dokumentacji referencyjnej dla języka XAML, zobacz Usługi XAML.
Klasy pomocnicze i klasy valueSerializer
Klasa ValueSerializer obsługuje konwersję typu na ciąg, szczególnie w przypadku przypadków serializacji XAML, w których serializacja może wymagać wielu trybów lub węzłów w danych wyjściowych. W programach .NET Framework 3.5 i .NET Framework 3.0 ValueSerializer element for WPF znajdował się w zestawie WindowsBase. W programie .NET Framework 4 ValueSerializer klasa znajduje się w pliku System.Xaml i jest przeznaczona dla każdego scenariusza rozszerzalności XAML, a nie tylko dla tych, które są oparte na WPF. IValueSerializerContext (usługa pomocnicza) i DateTimeValueSerializer (określona podklasa) są również migrowane do pliku System.Xaml.
Atrybuty związane z XAML
WPF XAML zawiera kilka atrybutów, które można zastosować do typów CLR, aby wskazać coś o ich zachowaniu XAML. Poniżej znajduje się lista atrybutów, które istniały w zestawach WPF w programach .NET Framework 3.5 i .NET Framework 3.0. Te atrybuty są migrowane do pliku System.Xaml w programie .NET Framework 4.
Różne klasy
Interfejs IComponentConnector istniał w bazie danych WindowsBase w programach .NET Framework 3.5 i .NET Framework 3.0, ale istnieje w systemie System.Xaml w programie .NET Framework 4. IComponentConnector jest przeznaczony głównie do obsługi narzędzi i kompilatorów znaczników XAML.
Interfejs INameScope istniał w bazie danych WindowsBase w programach .NET Framework 3.5 i .NET Framework 3.0, ale istnieje w systemie System.Xaml w programie .NET Framework 4. INameScope definiuje podstawowe operacje dla zakresu nazw XAML.
Klasy związane z XAML z nazwami udostępnionymi, które istnieją w WPF i System.Xaml
W zestawach WPF i zestawie System.Xaml w programie .NET Framework 4 istnieją następujące klasy:
XamlReader
XamlWriter
XamlParseException
Implementacja WPF znajduje się w System.Windows.Markup przestrzeni nazw i zestawie PresentationFramework. Implementacja System.Xaml znajduje się w System.Xaml przestrzeni nazw. Jeśli używasz typów WPF lub pochodzisz z typów WPF, zazwyczaj należy używać implementacji XamlReaderXamlWriter WPF i zamiast implementacji System.Xaml. Aby uzyskać więcej informacji, zobacz Uwagi w System.Windows.Markup.XamlReader temacie i System.Windows.Markup.XamlWriter.
Jeśli dołączasz odwołania zarówno do zestawów WPF, jak i System.Xaml, a także używasz include
instrukcji dla System.Windows.Markup przestrzeni nazw i System.Xaml , może być konieczne pełne kwalifikacje wywołań do tych interfejsów API w celu rozwiązania typów bez niejednoznaczności.
.NET Desktop feedback