Типы, перенесенные из WPF в System.XamlTypes 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. Многие из открытых типов, которые обеспечивают расширение для реализации XAML в WPF, существовали в сборках 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. Распространенная реализация .NET Framework языковых служб XAML позволяет реализовать многие сценарии расширения 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. Многие типы, которые первоначально были реализованы для XAML WPF, теперь предоставляются в виде точек расширения или служб для любой реализации 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 пространство имен в .NET Framework 4 содержит сочетание общих типов поддержки языка XAML (из сборки System. XAML) и типов, характерных для реализации XAML в WPF (из 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:

Эти типы поддержки по-прежнему существуют в сборках Windows Workflow Foundation для .NET Framework 4 и по-прежнему могут использоваться для конкретных приложений 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 предназначен для любого сценария расширения XAML, использующего .NET Framework служб 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. Если это возможно, определенные платформы или пользовательский код в платформе также должны использовать класс MarkupExtension для расширения XAML.When possible, specific frameworks or user code in the framework should also build on the MarkupExtension class for XAML extension.

Вспомогательные классы службы MarkupExtensionMarkupExtension Supporting Service Classes

.NET Framework 3,5 и .NET Framework 3,0 для WPF предоставил несколько служб, которые были доступны MarkupExtension для разработчиков и TypeConverter реализаций для поддержки использования типа/свойства в XAML..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].

Возможности языка XAMLXAML Language Features

Некоторые возможности и компоненты языка XAML для WPF были доступны ранее в сборке 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 они существуют в сборке System. 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.

Следующая таблица содержит список классов поддержки XAML, определенных в сборке System.Xaml.The following table contains a list of the XAML feature-support classes that are defined in System.Xaml.

Возможность языка XAMLXAML Language Feature ИспользованиеUsage
ArrayExtension <x:Array ...>
NullExtension {x:Null}
StaticExtension {x:Static ...}
TypeExtension {x:Type ...}

Хотя в сборке System.Xaml могут отсутствовать конкретные классы поддержки, общая логика обработки возможностей языка XAML теперь находится в сборке System.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 — это атрибут, который обрабатывается средствами чтения и записи XAML из реализаций System.XAML. Как можно заметить, в потоке узлов XAML предусмотрена обработка в контексте схемы XAML по умолчанию (на основе CLR), представление системы типов 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 представляет собой подраздел для XAML Services и соответствующего общего набора документации по платформе .NET Framework, а не часть набора документации WPF в виде подраздела Дополнительно (Windows Presentation Foundation) (как в наборах документации версии 3.5).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 класс находится в System. XAML и предназначен для любого сценария расширения XAML, а не только для тех, которые построены на WPF.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.

XAML в WPF содержал несколько атрибутов, которые можно было применять к типам CLR, чтобы указать что-то об их поведении в XAML.WPF XAML included several attributes that can be applied to CLR types to indicate something about their XAML behavior. Ниже приведен список атрибутов, которые существовали в сборках WPF в .NET Framework 3,5 и .NET Framework 3,0.The following is a list of the attributes that existed in WPF assemblies in .NET Framework 3.5 and .NET Framework 3.0. Эти атрибуты переносятся в System. XAML в .NET Framework 4.These attributes are migrated to System.Xaml in .NET Framework 4.

Различные классыMiscellaneous Classes

IComponentConnector Интерфейс существовал в WindowsBase .NET Framework 3,5 и .NET Framework 3,0, но существует в System. XAML в .NET Framework 4.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 Интерфейс существовал в WindowsBase .NET Framework 3,5 и .NET Framework 3,0, но существует в System. XAML в .NET Framework 4.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, так и в сборке System. XAML в .NET Framework 4: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, следует использовать реализации XamlReader и XamlWriter WPF вместо реализаций System.Xaml.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