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.componentmodel アセンブリに存在していました。Likewise, public types that provided extensibility for Windows Workflow Foundation XAML existed in the System.Workflow.ComponentModel assembly. .NET Framework 4 では、XAML 関連の型の一部が、システムの .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名前空間と新しい app.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. これにより、他のフレームワーク (WPF や Windows Workflow Foundation など) のアセンブリを含めなくても、XAML 拡張シナリオが可能になります。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 、.NET Framework 4 の名前空間には、xaml 言語の一般的なサポート型 (app.xaml アセンブリ) と 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.componentmodel アセンブリに存在していました。A parallel class for Windows Workflow Foundation, MarkupExtension, existed in the System.Workflow.ComponentModel assembly. .NET Framework 4 では、クラスMarkupExtensionがシステムの .xaml アセンブリに移行されます。In the .NET Framework 4, the MarkupExtension class is migrated to the System.Xaml assembly. .NET Framework 4 では、 MarkupExtensionは、特定のフレームワーク上に構築される xaml 機能拡張シナリオだけでなく、.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 および .NET Framework 3.0 for WPF では、XAML での型MarkupExtensionとプロパティTypeConverterの使用をサポートするために実装および実装で利用できるいくつかのサービスが提供されています。.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 では、これらは app.xaml アセンブリに存在するため、WPF アセンブリを含まないプロジェクトでこれらの 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 WPF のは windowsbase アセンブリにありました。In .NET Framework 3.5 and .NET Framework 3.0, the ValueSerializer for WPF was in the WindowsBase assembly. .NET Framework 4 ValueSerializerでは、クラスは app.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 の Page.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 の page.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 の page.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.

次のクラスは、.NET Framework 4 の WPF アセンブリと .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