WPF から System.Xaml に移行した型Types Migrated from WPF to System.Xaml

.NET Framework 3.5 と .NET Framework 3.0 では、どちらもWindows Presentation Foundation (WPF)Windows Presentation Foundation (WPF)Windows Workflow Foundation には、XAML 言語の実装が含まれているとします。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. WPF XAML 実装に拡張性を与えていたパブリック型の多くは、WindowsBase、PresentationCore、および PresentationFramework アセンブリに存在していました。Many of the public types that provided extensibility for the WPF XAML implementation existed in the WindowsBase, PresentationCore, and PresentationFramework assemblies. 同様に、Windows Workflow Foundation の XAML 機能拡張を提供するパブリック型は System.Workflow.ComponentModel アセンブリに存在します。Likewise, public types that provided extensibility for Windows Workflow Foundation XAML existed in the System.Workflow.ComponentModel assembly. .NET Framework 4 での XAML 関連の型の一部が System.Xaml アセンブリに移行します。In the .NET Framework 4, some of the XAML-related types are migrated to the System.Xaml assembly. XAML 言語サービスの一般的な .NET Framework の実装により、多くの XAML 機能拡張シナリオ固有のフレームワークの XAML 実装によって定義されていたが、全体的な .NET Framework 4 の XAML 言語のサポートの一部であるようになりました。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. このトピックでは、移行された型を紹介し、移行に伴う問題について説明します。This topic lists the types that are migrated and discusses issues related to the migration.

アセンブリと名前空間Assemblies and Namespaces

.NET Framework 3.5 および .NET Framework 3.0 では、WPF が XAML をサポートするために実装する型が一般に、System.Windows.Markup名前空間。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. これらの型の多くは WindowsBase アセンブリにありました。Most of these types were in the WindowsBase assembly.

.NET Framework 4 では、新しいSystem.Xaml名前空間と、新しい System.Xaml アセンブリ。In .NET Framework 4, there is a new System.Xaml namespace and a new System.Xaml assembly. 当初は WPF XAML 向けとして実装されていた型の多くが、今では XAML の任意の実装用の機能拡張ポイントまたはサービスとして提供されています。Many of the types that were originally implemented for WPF XAML are now provided as extensibility points or services for any implementation of XAML. より一般的なシナリオでも使用できるようにするため、型は元の WPF アセンブリから System.Xaml アセンブリに型転送されました。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. これにより XAML 機能拡張シナリオを使用して、他のフレームワーク (WPF や Windows Workflow Foundation) のアセンブリを含める必要はありません。This enables XAML extensibility scenarios without having to include the assemblies of other frameworks (such as WPF and Windows Workflow Foundation).

移行した型のほとんどは、 System.Windows.Markup 名前空間に残っています。For migrated types, most of the types remain in the System.Windows.Markup namespace. これは、既存の実装で CLR 名前空間マッピングが破損するのをファイルごとに回避するための策でもあります。This was partially to avoid breaking CLR namespace mappings in existing implementations on a per-file basis. 結果として、 System.Windows.Markup (System.Xaml アセンブリ) からの一般的な XAML 言語のサポート型の混在が .NET Framework 4 で名前空間に含まれていますと WPF XAML 実装に (WindowsBase およびその他の WPF アセンブリ) から、特定では型です。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). System.Xaml に移行されたものの、以前は WPF アセンブリにあった型は、バージョン 4 の WPF アセンブリで型転送がサポートされています。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 サポート型Workflow XAML Support Types

Windows Workflow Foundation では、XAML サポート型も提供されており、多くの場合と同じ WPF に同じ短い名前でした。Windows Workflow Foundation also provided XAML support types, and in many cases these had identical short names to a WPF equivalent. Windows Workflow Foundation の XAML サポート型の一覧を次には。The following is a list of Windows Workflow Foundation XAML support types:

これらのサポート型は引き続き .NET Framework 4 向けの Windows Workflow Foundation アセンブリ内に存在し、ことができます。 特定の Windows Workflow Foundation アプリケーションの使用ただし、する必要がありますいないでは参照アプリケーションまたはフレームワークが Windows Workflow Foundation を使用しないでください。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

.NET Framework 3.5 と .NET Framework 3.0 で、 MarkupExtension WPF は WindowsBase アセンブリのクラスします。In the .NET Framework 3.5 and .NET Framework 3.0, the MarkupExtension class for WPF was in the WindowsBase assembly. Windows Workflow foundation での並列クラスMarkupExtension、System.Workflow.ComponentModel アセンブリにありました。A parallel class for Windows Workflow Foundation, MarkupExtension, existed in the System.Workflow.ComponentModel assembly. .NET Framework 4 で、MarkupExtensionクラスは System.Xaml アセンブリに移行されます。In the .NET Framework 4, the MarkupExtension class is migrated to the System.Xaml assembly. .NET Framework 4 でMarkupExtensionの特定のフレームワーク上に構築されるだけでなく、.NET Framework XAML サービスを使用する任意の XAML 機能拡張シナリオ向けです。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. 特定のフレームワーク、またはフレームワーク内のユーザー コードも、可能な限り、XAML 機能拡張の MarkupExtension クラス上に構築する必要があります。When possible, specific frameworks or user code in the framework should also build on the MarkupExtension class for XAML extension.

MarkupExtension をサポートするサービス クラスMarkupExtension Supporting Service Classes

.NET framework 3.5 と WPF の .NET Framework 3.0 に使用可能になったいくつかのサービスを提供してMarkupExtension実装とTypeConverterXAML の型/プロパティの使用をサポートするために実装します。.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. これらのサービスを次に示します。These services are the following:

注意

マークアップ拡張機能に関連する .NET Framework 3.5 から他のサービスが、IReceiveMarkupExtensionインターフェイス。Another service from .NET Framework 3.5 that is related to markup extensions is the IReceiveMarkupExtension interface. IReceiveMarkupExtension 移行されなかったし、マークされて[Obsolete]の .NET Framework 4。IReceiveMarkupExtension was not migrated and is marked [Obsolete] for .NET Framework 4. 以前に IReceiveMarkupExtension を使用していたシナリオは、代わりに XamlSetMarkupExtensionAttribute 属性付きコールバックを使用する必要があります。Scenarios that previously used IReceiveMarkupExtension should instead use XamlSetMarkupExtensionAttribute attributed callbacks. AcceptedMarkupExtensionExpressionTypeAttribute[Obsolete]とマーク付けされています。AcceptedMarkupExtensionExpressionTypeAttribute is also marked [Obsolete].

XAML 言語機能XAML Language Features

WPF 向けのいくつかの XAML 言語機能とコンポーネントは、以前は PresentationFramework アセンブリにありました。Several XAML language features and components for WPF previously existed in the PresentationFramework assembly. これらの機能やコンポーネントは MarkupExtension のサブクラスとして実装され、XAML マークアップでのマークアップ拡張機能の使用を公開していました。These were implemented as a MarkupExtension subclass to expose markup extension usages in XAML markup. .NET Framework 4 では、WPF アセンブリを組み込んでいないプロジェクトは、XAML 言語レベルのこれらの機能を使用できるようにこれらのコンピューターが System.Xaml アセンブリに存在します。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 では、.NET Framework 4 アプリケーションのこれらの同じ実装を使用します。WPF uses these same implementations for .NET Framework 4 applications. このトピックで示す他のケースと同様に、サポート型は System.Windows.Markup 名前空間に引き続き存在するので、以前の参照は破損されません。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.

System.Xaml で定義されている XAML 機能のサポート クラスを次の表に示します。The following table contains a list of the XAML feature-support classes that are defined in System.Xaml.

XAML 言語機能XAML Language Feature 使用法Usage
ArrayExtension <x:Array ...>
NullExtension {x:Null}
StaticExtension {x:Static ...}
TypeExtension {x:Type ...}

System.Xaml には特定のサポート クラスはありませんが、XAML 言語の言語機能を処理するための一般的なロジックは System.Xaml にあり、それを実装した XAML リーダーと XAML ライターにも含まれています。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. たとえば、 x:TypeArguments は System.Xaml 実装の XAML リーダーと XAML ライターによって処理される属性です。これは XAML ノード ストリームで示すことができ、既定の (CLR ベースの) XAML スキーマ コンテキストに処理があり、XAML 型システム表現があります。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. その結果、XAML 言語レベルのすべての機能に関するリファレンス ドキュメントは、WPF ドキュメント セットに属する「 詳細設定 (Windows Presentation Foundation) 」のサブトピックとしてではなく (3.5 のドキュメント セットは今でもここにあります)、 XAML Services と .NET Framework ドキュメント セットの一般分野のサブトピックとして掲載されています。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 とサポートするクラスValueSerializer and Supporting Classes

ValueSerializer クラスは、特に、シリアル化のために出力に複数のモードまたはノードが必要となる XAML シリアル化のケースで、文字列への型変換をサポートしています。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. .NET Framework 3.5 と .NET Framework 3.0 で、 ValueSerializer WindowsBase アセンブリには、WPF の。In .NET Framework 3.5 and .NET Framework 3.0, the ValueSerializer for WPF was in the WindowsBase assembly. .NET Framework 4 で、ValueSerializerクラスは System.Xaml と WPF 上に構築するためだけでなく、XAML 機能拡張シナリオを対象としています。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 (サポート サービス) および DateTimeValueSerializer (固有のサブクラス) も System.Xaml に移行されました。IValueSerializerContext (a supporting service) and DateTimeValueSerializer (a specific subclass) are also migrated to System.Xaml.

WPF XAML には、XAML の動作について何かを示すために CLR 型に適用される属性がいくつか含まれています。WPF XAML included several attributes that can be applied to CLR types to indicate something about their XAML behavior. 次に .NET Framework 3.5 と .NET Framework 3.0 での WPF アセンブリに存在していた属性の一覧を示します。The following is a list of the attributes that existed in WPF assemblies in .NET Framework 3.5 and .NET Framework 3.0. これらの属性は、.NET Framework 4 では System.Xaml に移行されます。These attributes are migrated to System.Xaml in .NET Framework 4.

その他のクラスMiscellaneous Classes

IComponentConnectorインターフェイスは、.NET Framework 3.5 と .NET Framework 3.0 では、WindowsBase に存在していたが、.NET Framework 4 では System.Xaml に存在します。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 は、主にツーリングのサポートと XAML マークアップ コンパイラーを目的としています。IComponentConnector is primarily intended for tooling support and XAML markup compilers.

INameScopeインターフェイスは、.NET Framework 3.5 と .NET Framework 3.0 では、WindowsBase に存在していたが、.NET Framework 4 では System.Xaml に存在します。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 は、XAML 名前空間に対する基本的な操作を定義します。INameScope defines basic operations for a XAML namescope.

次のクラスは、WPF アセンブリと .NET Framework 4 では System.Xaml アセンブリの両方に存在します。The following classes exist in both the WPF assemblies and the System.Xaml assembly in the .NET Framework 4:

XamlReader

XamlWriter

XamlParseException

WPF 実装は、 System.Windows.Markup 名前空間にあり、PresentationFramework アセンブリに含まれています。The WPF implementation is found in the System.Windows.Markup namespace, and PresentationFramework assembly. System.Xaml 実装は、 System.Xaml 名前空間にあります。The System.Xaml implementation is found in the System.Xaml namespace. WPF 型を使用する場合や、WPF 型から派生する場合は、一般に、System.Xaml 実装ではなく XamlReader および XamlWriter の WPF 実装を使用する必要があります。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. 詳細については、 System.Windows.Markup.XamlReader および System.Windows.Markup.XamlWriterの解説セクションを参照してください。For more information, see Remarks in System.Windows.Markup.XamlReader and System.Windows.Markup.XamlWriter.

WPF アセンブリと System.Xaml の両方を参照しており、 include 名前空間と System.Windows.Markup 名前空間の両方に対して System.Xaml ステートメントを使用している場合は、あいまいさを排除して型を解決するために、これらの API への呼び出しを完全修飾する必要があることがあります。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.

関連項目See also