Aus WPF zu System.Xaml migrierte TypenTypes Migrated from WPF to System.Xaml

In .NET Framework 3,5 und .NET Framework 3,0 enthielt sowohl Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) als auch Windows Workflow Foundation eine XAML-sprach Implementierung.In .NET Framework 3.5 and .NET Framework 3.0, both Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) and Windows Workflow Foundation included a XAML language implementation. Viele der öffentlichen Typen, die Erweiterbarkeit für die WPF-XAML-Implementierung bereitstellten, waren in den WindowsBase-, PresentationCore- und PresentationFramework-Assemblys vorhanden.Many of the public types that provided extensibility for the WPF XAML implementation existed in the WindowsBase, PresentationCore, and PresentationFramework assemblies. Ebenso waren öffentliche Typen, die Erweiterbarkeit für Windows Workflow Foundation XAML bereitstellten, in der System. Workflow. ComponentModel-Assembly vorhanden.Likewise, public types that provided extensibility for Windows Workflow Foundation XAML existed in the System.Workflow.ComponentModel assembly. In den .NET Framework 4 werden einige der XAML-bezogenen Typen zur System. XAML-Assembly migriert.In the .NET Framework 4, some of the XAML-related types are migrated to the System.Xaml assembly. Eine gängige .NET Framework Implementierung der XAML-Sprachdienste ermöglicht viele XAML-Erweiterbarkeits Szenarios, die ursprünglich durch die XAML-Implementierung eines bestimmten Frameworks definiert wurden, aber jetzt Teil der gesamten .NET Framework 4 XAML-Sprachunterstützung sind.A common .NET Framework implementation of XAML language services enables many XAML extensibility scenarios that were originally defined by a specific framework's XAML implementation but are now part of overall .NET Framework 4 XAML language support. In diesem Thema werden die migrierten Typen aufgeführt und Probleme im Zusammenhang mit der Migration erläutert.This topic lists the types that are migrated and discusses issues related to the migration.

Assemblys und NamespacesAssemblies and Namespaces

In .NET Framework 3,5 und .NET Framework 3,0 waren die Typen, die WPF zur Unterstützung von XAML implementiert hat System.Windows.Markup , in der Regel im-Namespace.In .NET Framework 3.5 and .NET Framework 3.0, the types that WPF implemented to support XAML were generally in the System.Windows.Markup namespace. Die meisten dieser Typen befanden sich in der WindowsBase-Assembly.Most of these types were in the WindowsBase assembly.

In .NET Framework 4 gibt es einen neuen System.Xaml Namespace und eine neue System. XAML-Assembly.In .NET Framework 4, there is a new System.Xaml namespace and a new System.Xaml assembly. Viele der Typen, die ursprünglich für WPF-XAML implementiert wurden, stehen jetzt als Erweiterbarkeitspunkte oder -dienste für alle XAML-Implementierungen zur Verfügung.Many of the types that were originally implemented for WPF XAML are now provided as extensibility points or services for any implementation of XAML. Im Rahmen der Verfügbarmachung für allgemeinere Szenarien wird für die Typen eine Typweiterleitung von der ursprünglichen WPF-Assembly zur System.Xaml-Assembly durchgeführt.As part of making them available for more general scenarios, the types are type-forwarded from their original WPF assembly to the System.Xaml assembly. Dies ermöglicht XAML-Erweiterbarkeits Szenarios, ohne dass die Assemblys anderer Frameworks (z. b. WPF und Windows Workflow Foundation) eingeschlossen werden müssen.This enables XAML extensibility scenarios without having to include the assemblies of other frameworks (such as WPF and Windows Workflow Foundation).

Für migrierte Typen verbleiben die meisten Typen im System.Windows.Markup -Namespace.For migrated types, most of the types remain in the System.Windows.Markup namespace. Dadurch sollte u. a. vermieden werden, dass CLR-Namespacezuordnungen in vorhandenen Implementierungen pro Datei unterbrochen werden.This was partially to avoid breaking CLR namespace mappings in existing implementations on a per-file basis. Daher enthält der System.Windows.Markup Namespace in .NET Framework 4 eine Mischung aus allgemeinen XAML-sprach Unterstützungs Typen (aus der System. XAML-Assembly) und Typen, die für die WPF-XAML-Implementierung spezifisch sind (aus Windows Base und anderen WPF-Assemblys).As a result, the System.Windows.Markup namespace in .NET Framework 4 contains a mixture of general XAML language support types (from the System.Xaml assembly) and types that are specific to the WPF XAML implementation (from WindowsBase and other WPF assemblies). Für jeden Typ, der zu System.Xaml migriert wurde, aber zuvor in einer WPF-Assembly vorhanden war, wird in Version 4 der WPF-Assembly die Typweiterleitung unterstützt.Any type that was migrated to System.Xaml, but existed previously in a WPF assembly, has type-forwarding support in version 4 of the WPF assembly.

XAML-Unterstützungstypen in WorkflowWorkflow XAML Support Types

Windows Workflow Foundation auch XAML-Unterstützungs Typen bereitgestellt, und in vielen Fällen hatten diese die gleichen Kurznamen wie eine WPF-Entsprechung.Windows Workflow Foundation also provided XAML support types, and in many cases these had identical short names to a WPF equivalent. Im folgenden finden Sie eine Liste der Windows Workflow Foundation XAML-Unterstützungs Typen:The following is a list of Windows Workflow Foundation XAML support types:

Diese Unterstützungs Typen sind immer noch 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.These support types still exist in the Windows Workflow Foundation assemblies for .NET Framework 4 and can still be used for specific Windows Workflow Foundation applications; however, they should not be referenced by applications or frameworks that do not use Windows Workflow Foundation.

MarkupExtensionMarkupExtension

In den .NET Framework 3,5 und .NET Framework 3,0 befand sich MarkupExtension die-Klasse für WPF in der Windows Base-Assembly.In the .NET Framework 3.5 and .NET Framework 3.0, the MarkupExtension class for WPF was in the WindowsBase assembly. Eine parallele Klasse für Windows Workflow Foundation, MarkupExtension, war in der System. Workflow. ComponentModel-Assembly vorhanden.A parallel class for Windows Workflow Foundation, MarkupExtension, existed in the System.Workflow.ComponentModel assembly. In der .NET Framework 4 wird die MarkupExtension -Klasse zur System. XAML-Assembly migriert.In the .NET Framework 4, the MarkupExtension class is migrated to the System.Xaml assembly. In .NET Framework 4 MarkupExtension ist für alle XAML-Erweiterbarkeits Szenarios gedacht, die .NET Framework XAML-Dienste verwenden, nicht nur für diejenigen, die auf bestimmten Frameworks aufbauen.In the .NET Framework 4, MarkupExtension is intended for any XAML extensibility scenario that uses .NET Framework XAML Services, not just for those that build on specific frameworks. Nach Möglichkeiten sollten auch spezifische Frameworks oder Benutzercode im Framework auf der MarkupExtension -Klasse für die XAML-Erweiterung aufbauen.When possible, specific frameworks or user code in the framework should also build on the MarkupExtension class for XAML extension.

Dienstklassen, die MarkupExtension unterstützenMarkupExtension Supporting Service Classes

In .NET Framework 3,5 und .NET Framework 3,0 für WPF wurden mehrere Dienste bereitgestellt, MarkupExtension die Implementierern und TypeConverter Implementierungen zur Unterstützung der Verwendung von Typen/Eigenschaften in XAML zur Verfügung standen..NET Framework 3.5 and .NET Framework 3.0 for WPF provided several services that were available to MarkupExtension implementers and TypeConverter implementations to support type/property usage in XAML. Es handelt sich dabei um die folgenden Dienste:These services are the following:

Hinweis

Ein anderer Dienst von .NET Framework 3,5, der sich auf Markup Erweiterungen bezieht IReceiveMarkupExtension , ist die-Schnittstelle.Another service from .NET Framework 3.5 that is related to markup extensions is the IReceiveMarkupExtension interface. IReceiveMarkupExtensionwurde nicht migriert und ist [Obsolete] für .NET Framework 4 markiert.IReceiveMarkupExtension was not migrated and is marked [Obsolete] for .NET Framework 4. Für Szenarios, in denen zuvor IReceiveMarkupExtension verwendet wurde, sollten stattdessen attributierte XamlSetMarkupExtensionAttribute -Rückrufe verwendet werden.Scenarios that previously used IReceiveMarkupExtension should instead use XamlSetMarkupExtensionAttribute attributed callbacks. AcceptedMarkupExtensionExpressionTypeAttribute ist ebenfalls als [Obsolete]gekennzeichnet.AcceptedMarkupExtensionExpressionTypeAttribute is also marked [Obsolete].

Features der XAML-SpracheXAML Language Features

Mehrere Features und Komponenten der XAML-Sprache für WPF waren zuvor in der PresentationFramework-Assembly enthalten.Several XAML language features and components for WPF previously existed in the PresentationFramework assembly. Diese wurden als MarkupExtension -Unterklasse implementiert, damit Markuperweiterungen in XAML-Markup verwendet werden konnten.These were implemented as a MarkupExtension subclass to expose markup extension usages in XAML markup. In .NET Framework 4 sind diese in der System. XAML-Assembly vorhanden, sodass Projekte, die keine WPF-Assemblys enthalten, diese Funktionen auf XAML-Sprachebene verwenden können.In .NET Framework 4, these exist in the System.Xaml assembly so that projects that do not include WPF assemblies can use these XAML language-level features. WPF verwendet die gleichen Implementierungen für .NET Framework 4-Anwendungen.WPF uses these same implementations for .NET Framework 4 applications. Wie in den anderen in diesem Thema aufgeführten Fällen sind die unterstützenden Typen weiterhin im System.Windows.Markup -Namespace vorhanden, um zu verhindern, dass frühere Verweise ungültig werden.As with the other cases that are listed in this topic, the supporting types continue to exist in the System.Windows.Markup namespace to avoid breaking previous references.

Die folgende Tabelle enthält eine Liste der Klassen mit XAML-Featureunterstützung, die in System.Xaml definiert sind.The following table contains a list of the XAML feature-support classes that are defined in System.Xaml.

Feature der XAML-SpracheXAML Language Feature VerwendungUsage
ArrayExtension <x:Array ...>
NullExtension {x:Null}
StaticExtension {x:Static ...}
TypeExtension {x:Type ...}

Obwohl System.Xaml möglicherweise keine spezifischen Unterstützungsklassen enthält, befindet sich die allgemeine Logik für die Verarbeitung von Sprachfeatures für die XAML-Sprache jetzt in System.Xaml und den zugehörigen implementierten XAML-Readern und XAML-Writern.Although System.Xaml may not have specific support classes, the general logic for processing language features for the XAML language now resides in System.Xaml and its implemented XAML readers and XAML writers. Beispiel: x:TypeArguments ist ein Attribut, das von XAML-Readern und XAML-Writern aus System.Xaml-Implementierungen verarbeitet wird; es kann im XAML-Knotenstream eingetragen werden, verfügt über Behandlung im standardmäßigen (CLR-basierten) XAML-Schemakontext, hat eine XAML-Typsystemdarstellung usw.For example, x:TypeArguments is an attribute that is processed by XAML readers and XAML writers from System.Xaml implementations; it can be noted in the XAML node stream, has handling in the default (CLR-based) XAML schema context, has a XAML type-system representation, and so on. Folglich ist die Referenzdokumentation für alle Features auf XAML-Sprachebene ein untergeordnetes Thema von XAML Services und diesem allgemeinen Bereich der .NET Framework-Dokumentation, statt Bestandteil der WPF-Dokumentation als untergeordnetes Thema von Erweitert (Windows Presentation Foundation) zu sein (was in der 3.5-Dokumentation weiterhin der Fall ist).As a result, the reference documentation for all XAML language-level features is a subtopic for XAML Services and that general area of the .NET Framework documentation set, instead of being part of the WPF documentation set as a subtopic of Advanced (Windows Presentation Foundation) (as is still the case in 3.5 documentation sets).

ValueSerializer und unterstützende KlassenValueSerializer and Supporting Classes

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.The ValueSerializer class supports type conversion to a string, particularly for XAML serialization cases where serialization may require multiple modes or nodes in the output. In .NET Framework 3,5 und .NET Framework 3,0 befand sich ValueSerializer der für WPF in der Windows Base-Assembly.In .NET Framework 3.5 and .NET Framework 3.0, the ValueSerializer for WPF was in the WindowsBase assembly. In der .NET Framework 4 befindet sich ValueSerializer die-Klasse in System. XAML und ist für alle XAML-Erweiterbarkeits Szenarios gedacht, nicht nur für diejenigen, die auf WPF aufbauen.In the .NET Framework 4, the ValueSerializer class is in System.Xaml and is intended for any XAML extensibility scenario, not just for those that build on WPF. IValueSerializerContext (ein unterstützender Dienst) und DateTimeValueSerializer (eine bestimmte Unterklasse) werden ebenfalls zu „System.Xaml“ migriert.IValueSerializerContext (a supporting service) and DateTimeValueSerializer (a specific subclass) are also migrated to System.Xaml.

WPF-XAML enthielt mehrere Attribute, die auf CLR-Typen angewendet werden können, um Angaben über deren XAML-Verhalten zu machen.WPF XAML included several attributes that can be applied to CLR types to indicate something about their XAML behavior. Im folgenden finden Sie eine Liste der Attribute, die in WPF-Assemblys in .NET Framework 3,5 und .NET Framework 3,0 vorhanden waren.The following is a list of the attributes that existed in WPF assemblies in .NET Framework 3.5 and .NET Framework 3.0. Diese Attribute werden in .NET Framework 4 zu "System. XAML" migriert.These attributes are migrated to System.Xaml in .NET Framework 4.

Verschiedene KlassenMiscellaneous Classes

Die IComponentConnector -Schnittstelle war in der .NET Framework 3,5 und .NET Framework 3,0 in Windows Base vorhanden, ist jedoch in "System. XAML" in .NET Framework 4 vorhanden.The IComponentConnector interface existed in WindowsBase in the .NET Framework 3.5 and .NET Framework 3.0, but exists in System.Xaml in .NET Framework 4. IComponentConnector ist hauptsächlich für Toolunterstützung und XAML-Markupcompiler gedacht.IComponentConnector is primarily intended for tooling support and XAML markup compilers.

Die INameScope -Schnittstelle war in der .NET Framework 3,5 und .NET Framework 3,0 in Windows Base vorhanden, ist jedoch in "System. XAML" in .NET Framework 4 vorhanden.The INameScope interface existed in WindowsBase in the .NET Framework 3.5 and .NET Framework 3.0, but exists in System.Xaml in .NET Framework 4. INameScope definiert grundlegende Vorgänge für einen XAML-Namensbereich.INameScope defines basic operations for a XAML namescope.

Die folgenden Klassen sind in den WPF-Assemblys und in der System. XAML-Assembly im .NET Framework 4 vorhanden:The following classes exist in both the WPF assemblies and the System.Xaml assembly in the .NET Framework 4:

XamlReader

XamlWriter

XamlParseException

Die WPF-Implementierung befindet sich im System.Windows.Markup -Namespace und in der PresentationFramework-Assembly.The WPF implementation is found in the System.Windows.Markup namespace, and PresentationFramework assembly. Die System.Xaml-Implementierung befindet sich im System.Xaml -Namespace.The System.Xaml implementation is found in the System.Xaml namespace. Wenn Sie WPF-Typen verwenden oder von WPF-Typen ableiten, sollten Sie in der Regel die WPF-Implementierungen von XamlReader und XamlWriter anstelle der System.Xaml-Implementierungen verwenden.If you are using WPF types or are deriving from WPF types, you should typically use the WPF implementations of XamlReader and XamlWriter instead of the System.Xaml implementations. Weitere Informationen finden Sie in den Bemerkungen zu System.Windows.Markup.XamlReader und System.Windows.Markup.XamlWriter.For more information, see Remarks in System.Windows.Markup.XamlReader and System.Windows.Markup.XamlWriter.

Wenn Sie Verweise auf WPF-Assemblys und System.Xaml einschließen und außerdem include -Anweisungen für den System.Windows.Markup - und den System.Xaml -Namespace verwenden, müssen Sie die Aufrufe dieser APIs möglicherweisemöglicherweise vollständig qualifizieren, um die Typen ohne Mehrdeutigkeit aufzulösen.If you are including references to both WPF assemblies and System.Xaml, and you also are using include statements for both the System.Windows.Markup and System.Xaml namespaces, you may need to fully qualify the calls to these APIs in order to resolve the types without ambiguity.

Siehe auchSee also