Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In .NET Framework 3.5 und .NET Framework 3.0 enthielten sowohl Windows Presentation Foundation (WPF) als auch Windows Workflow Foundation eine XAML-Sprachimplementierung. Viele der öffentlichen Typen, die die Erweiterbarkeit für die WPF-XAML-Implementierung bereitgestellt haben, sind in den Assemblys WindowsBase, PresentationCore und PresentationFramework vorhanden. Ebenso sind öffentliche Typen, die die Erweiterbarkeit für Windows Workflow Foundation XAML bereitgestellt haben, in der System.Workflow.ComponentModel-Assembly vorhanden. In .NET Framework 4 wurden einige der XAML-bezogenen Typen zur System.Xaml-Assembly migriert. Eine allgemeine .NET Framework-Implementierung von XAML-Sprachdiensten ermöglicht viele XAML-Erweiterbarkeitsszenarien, die ursprünglich durch die XAML-Implementierung eines bestimmten Frameworks definiert wurden, aber jetzt Teil der allgemeinen .NET Framework 4 XAML-Sprachunterstützung sind. In diesem Artikel werden die Typen aufgelistet, die migriert wurden, und probleme im Zusammenhang mit der Migration erläutert.
Assemblies und Namespaces
In .NET Framework 3.5 und .NET Framework 3.0 waren die Typen, die WPF zur Unterstützung von XAML implementiert hat, im Allgemeinen im System.Windows.Markup Namespace enthalten. Die meisten dieser Typen befanden sich in der WindowsBase-Assembly.
In .NET Framework 4 gibt es einen neuen System.Xaml Namespace und eine neue System.Xaml-Assembly. Viele der Typen, die ursprünglich für WPF-XAML implementiert wurden, werden jetzt als Erweiterbarkeitspunkte oder Dienste für jede Implementierung von XAML bereitgestellt. Im Rahmen der Bereitstellung für allgemeinere Szenarien werden die Typen von der ursprünglichen WPF-Assembly an die System.Xaml-Assembly weitergeleitet. Dies ermöglicht XAML-Erweiterbarkeitsszenarien, ohne die Assemblys anderer Frameworks (z. B. WPF und Windows Workflow Foundation) einbeziehen zu müssen.
Bei migrierten Typen verbleiben die meisten Typen im System.Windows.Markup Namespace. Dies geschah teilweise, um zu vermeiden, dass CLR-Namespacezuordnungen in vorhandenen Implementierungen pro Datei unterbrochen werden. Daher enthält der System.Windows.Markup Namespace in .NET Framework 4 eine Mischung aus allgemeinen XAML-Sprachunterstützungstypen (aus der System.Xaml-Assembly) und Typen, die für die WPF-XAML-Implementierung (aus WindowsBase und anderen WPF-Assemblys) spezifisch sind. Jeder Typ, der zu System.Xaml migriert wurde, aber zuvor in einer WPF-Assembly vorhanden war, verfügt über Unterstützung für die Typweiterleitung in Version 4 der WPF-Assembly.
Workflow-XAML-Unterstützungstypen
Windows Workflow Foundation hat auch XAML-Unterstützungstypen bereitgestellt, und in vielen Fällen hatten diese identische Kurznamen mit einem WPF-Äquivalent. Es folgt eine Liste der Windows Workflow Foundation XAML-Unterstützungstypen:
Diese Unterstützungstypen sind weiterhin in den Windows Workflow Foundation-Assemblys für .NET Framework 4 vorhanden und können weiterhin für bestimmte Windows Workflow Foundation-Anwendungen verwendet werden. Sie sollten jedoch nicht von Anwendungen oder Frameworks referenziert werden, die windows Workflow Foundation nicht verwenden.
MarkupExtension
In .NET Framework 3.5 und .NET Framework 3.0 befand sich die MarkupExtension Klasse für WPF in der WindowsBase-Assembly. In der Assembly "System.Workflow.ComponentModel" ist eine parallele Klasse für Windows Workflow Foundation MarkupExtensionvorhanden. In .NET Framework 4 wird die MarkupExtension Klasse zur System.Xaml-Assembly migriert. In .NET Framework 4 ist für jedes XAML-Erweiterbarkeitsszenario gedacht, das .NET XAML Services verwendet, nicht nur für diejenigen, MarkupExtension die auf bestimmten Frameworks basieren. Wenn möglich, sollten bestimmte Frameworks oder Benutzercode im Framework auch auf der Klasse für die MarkupExtension XAML-Erweiterung aufbauen.
MarkupExtension unterstützende Dienstklassen
.NET Framework 3.5 und .NET Framework 3.0 für WPF haben mehrere Dienste bereitgestellt, die für MarkupExtension Implementierer und TypeConverter Implementierungen verfügbar waren, um die Nutzung von Typen und Eigenschaften in XAML zu unterstützen. Diese Dienste sind die folgenden:
Hinweis
Ein anderer Dienst von .NET Framework 3.5, der mit Markuperweiterungen verknüpft ist, ist die IReceiveMarkupExtension Schnittstelle.
IReceiveMarkupExtension wurde nicht migriert und ist [Obsolete] für .NET Framework 4 markiert. Szenarien, die zuvor IReceiveMarkupExtension verwendet haben, sollten stattdessen XamlSetMarkupExtensionAttribute-Attributrückrufe nutzen.
AcceptedMarkupExtensionExpressionTypeAttribute ist auch markiert [Obsolete].
Merkmale der XAML-Sprache
Mehrere XAML-Sprachfeatures und -Komponenten für WPF waren zuvor in der PresentationFramework-Assembly vorhanden. Diese wurden als MarkupExtension Unterklasse implementiert, um Markuperweiterungsverwendungen im XAML-Markup verfügbar zu machen. In .NET Framework 4 sind diese in der System.Xaml-Assembly vorhanden, sodass Projekte, die keine WPF-Assemblys enthalten, diese FEATURES auf XAML-Sprachebene verwenden können. WPF verwendet dieselben Implementierungen für .NET Framework 4-Anwendungen. Wie bei den anderen Fällen, die in diesem Thema aufgeführt sind, sind die unterstützenden Typen weiterhin im System.Windows.Markup Namespace vorhanden, um zu vermeiden, dass vorherige Verweise abgebrochen werden.
Die folgende Tabelle enthält eine Liste der XAML-Featureunterstützungsklassen, die in System.Xaml definiert sind.
| XAML-Sprachfunktion | Verwendung |
|---|---|
| ArrayExtension | <x:Array ...> |
| NullExtension | {x:Null} |
| StaticExtension | {x:Static ...} |
| TypeExtension | {x:Type ...} |
Obwohl System.Xaml möglicherweise keine spezifischen Unterstützungsklassen hat, befindet sich die allgemeine Logik für die Verarbeitung von Sprachfeatures für die XAML-Sprache jetzt in System.Xaml und den implementierten XAML-Readern und XAML-Autoren. Beispielsweise handelt es sich um ein Attribut, x:TypeArguments das von XAML-Lesern und XAML-Autoren aus System.Xaml-Implementierungen verarbeitet wird. Es kann im XAML-Knotendatenstrom angegeben werden, hat die Behandlung im Standardmäßigen (CLR-basierten) XAML-Schemakontext, verfügt über eine XAML-Typsystemdarstellung usw. Weitere Informationen zur Referenzdokumentation für XAML finden Sie unter XAML-Dienste.
ValueSerializer und unterstützende Klassen
Die ValueSerializer Klasse unterstützt die Typkonvertierung in eine Zeichenfolge, insbesondere für XAML-Serialisierungsfälle, in denen die Serialisierung möglicherweise mehrere Modi oder Knoten in der Ausgabe erfordert. In .NET Framework 3.5 und .NET Framework 3.0 befand sich der ValueSerializer für WPF in der WindowsBase-Assembly. In .NET Framework 4 befindet sich die ValueSerializer Klasse in System.Xaml und ist für jedes XAML-Erweiterbarkeitsszenario vorgesehen, nicht nur für diejenigen, die auf WPF basieren. IValueSerializerContext (ein unterstützender Dienst) und DateTimeValueSerializer (eine bestimmte Unterklasse) werden ebenfalls zu System.Xaml migriert.
XAML-Related Attribute
WPF-XAML enthält mehrere Attribute, die auf CLR-Typen angewendet werden können, um etwas über ihr XAML-Verhalten anzugeben. Es folgt eine Liste der Attribute, die in WPF-Assemblys in .NET Framework 3.5 und .NET Framework 3.0 vorhanden sind. Diese Attribute werden in .NET Framework 4 zu System.Xaml migriert.
Verschiedene Klassen
Die IComponentConnector Schnittstelle existierte in WindowsBase im .NET Framework 3.5 und .NET Framework 3.0, ist jedoch im System.Xaml des .NET Framework 4 vorhanden. IComponentConnector ist in erster Linie für Toolunterstützung und XAML-Markupcompiler vorgesehen.
Die INameScope Schnittstelle existierte in WindowsBase im .NET Framework 3.5 und .NET Framework 3.0, ist jedoch im System.Xaml des .NET Framework 4 vorhanden. INameScope definiert grundlegende Vorgänge für einen XAML-NameScope.
XAML-bezogene Klassen mit freigegebenen Namen, die in WPF und System.Xaml vorhanden sind
Die folgenden Klassen sind sowohl in den WPF-Assemblys als auch in der System.Xaml-Assembly in .NET Framework 4 vorhanden:
XamlReader
XamlWriter
XamlParseException
Die WPF-Implementierung befindet sich im Namespace und in der System.Windows.Markup PresentationFramework-Assembly. Die System.Xaml-Implementierung befindet sich im System.Xaml Namespace. Wenn Sie WPF-Typen verwenden oder von WPF-Typen abgeleitet werden, sollten Sie in der Regel die WPF-Implementierungen von XamlReader und XamlWriter anstelle der System.Xaml-Implementierungen verwenden. Weitere Informationen finden Sie in System.Windows.Markup.XamlReader und System.Windows.Markup.XamlWriter.
Wenn Sie Verweise sowohl auf WPF-Assemblys als auch auf System.Xaml einschließen und Anweisungen sowohl für die include- als auch die System.Windows.Markup-Namespaces verwenden, müssen Sie die Aufrufe dieser APIs möglicherweise vollständig qualifizieren, um die Typen ohne Mehrdeutigkeit aufzulösen.
.NET Desktop feedback