Tipi migrati da WPF a System.XamlTypes Migrated from WPF to System.Xaml

In .NET Framework 3,5 e .NET Framework 3,0, sia Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) che Windows Workflow Foundation includevano un'implementazione del linguaggio 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. Molti dei tipi pubblici che fornivano l'estensibilità per l'implementazione XAML di WPF erano inclusi negli assembly WindowsBase, PresentationCore e PresentationFramework.Many of the public types that provided extensibility for the WPF XAML implementation existed in the WindowsBase, PresentationCore, and PresentationFramework assemblies. Analogamente, i tipi pubblici che fornivano l'estensibilità per Windows Workflow Foundation XAML esistevano nell'assembly System. Workflow. ComponentModel.Likewise, public types that provided extensibility for Windows Workflow Foundation XAML existed in the System.Workflow.ComponentModel assembly. Nel .NET Framework 4, viene eseguita la migrazione di alcuni tipi correlati a XAML nell'assembly System. XAML.In the .NET Framework 4, some of the XAML-related types are migrated to the System.Xaml assembly. Un'implementazione di .NET Framework comune dei servizi del linguaggio XAML consente molti scenari di estensibilità XAML che sono stati definiti in origine dall'implementazione XAML di un Framework specifico, ma fanno ora parte del supporto del linguaggio XAML complessivo .NET Framework 4.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 questo argomento sono elencati i tipi di cui è stata eseguita la migrazione e vengono illustrati i problemi correlati alla migrazione.This topic lists the types that are migrated and discusses issues related to the migration.

Assembly e spazi dei nomiAssemblies and Namespaces

In .NET Framework 3,5 e .NET Framework 3,0 i tipi implementati da WPF per il supporto di XAML erano in System.Windows.Markup genere nello spazio dei nomi.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. La maggior parte di questi tipi era inclusa nell'assembly WindowsBase.Most of these types were in the WindowsBase assembly.

In .NET Framework 4 sono presenti un nuovo System.Xaml spazio dei nomi e un nuovo assembly System. XAML.In .NET Framework 4, there is a new System.Xaml namespace and a new System.Xaml assembly. Molti dei tipi implementati in origine per XAML di WPF sono ora forniti come punti di estendibilità o servizi per qualsiasi implementazione di 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. Nell'ambito della scelta di renderli disponibili per scenari più generali, i tipi sono stati inoltrati dall'assembly WPF originale all'assembly 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. Questo consente scenari di estendibilità XAML senza dover includere gli assembly di altri Framework (ad esempio WPF e Windows Workflow Foundation).This enables XAML extensibility scenarios without having to include the assemblies of other frameworks (such as WPF and Windows Workflow Foundation).

Per quanto riguarda i tipi migrati, la maggior parte rimane nello spazio dei nomi System.Windows.Markup .For migrated types, most of the types remain in the System.Windows.Markup namespace. Questa scelta deriva parzialmente dalla necessità di evitare l'interruzione dei mapping dello spazio dei nomi CLR nelle implementazioni esistenti su base file.This was partially to avoid breaking CLR namespace mappings in existing implementations on a per-file basis. Di conseguenza, lo System.Windows.Markup spazio dei nomi in .NET Framework 4 contiene una combinazione di tipi di supporto del linguaggio XAML generali (dall'assembly System. Xaml) e tipi specifici dell'implementazione XAML di WPF (da WindowsBase e altri assembly 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). Per qualsiasi tipo di cui è stata eseguita la migrazione a System.Xaml e che in precedenza era incluso in un assembly WPF è disponibile il supporto per l'inoltro dei tipi nella versione 4 dell'assembly 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.

Tipi di supporto XAML del flusso di lavoroWorkflow XAML Support Types

Windows Workflow Foundation fornivano anche tipi di supporto XAML e in molti casi questi avevano nomi brevi identici a un equivalente WPF.Windows Workflow Foundation also provided XAML support types, and in many cases these had identical short names to a WPF equivalent. Di seguito è riportato un elenco di Windows Workflow Foundation tipi di supporto XAML:The following is a list of Windows Workflow Foundation XAML support types:

Questi tipi di supporto sono ancora presenti negli assembly Windows Workflow Foundation per .NET Framework 4 e possono comunque essere utilizzati per applicazioni Windows Workflow Foundation specifiche. Tuttavia, non devono essere usati come riferimento da applicazioni o Framework che non usano 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

In .NET Framework 3,5 e .NET Framework 3,0, la MarkupExtension classe per WPF era nell'assembly WindowsBase.In the .NET Framework 3.5 and .NET Framework 3.0, the MarkupExtension class for WPF was in the WindowsBase assembly. Una classe parallela per Windows Workflow Foundation MarkupExtension,, esisteva nell'assembly System. Workflow. ComponentModel.A parallel class for Windows Workflow Foundation, MarkupExtension, existed in the System.Workflow.ComponentModel assembly. Nel .NET Framework 4, viene eseguita MarkupExtension la migrazione della classe all'assembly System. XAML.In the .NET Framework 4, the MarkupExtension class is migrated to the System.Xaml assembly. Nel .NET Framework 4, MarkupExtension è destinato a qualsiasi scenario di estensibilità XAML che usa .NET Framework servizi XAML, non solo per quelli che si basano su framework specifici.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. Quando possibile, framework specifici o codice utente nel framework deve essere basati anche sulla classe MarkupExtension per l'estensione XAML.When possible, specific frameworks or user code in the framework should also build on the MarkupExtension class for XAML extension.

MarkupExtension con supporto di classi del servizioMarkupExtension Supporting Service Classes

.NET Framework 3,5 e .NET Framework 3,0 per WPF fornivano diversi servizi disponibili per MarkupExtension gli implementatori e le TypeConverter implementazioni per supportare l'utilizzo di tipi/proprietà in 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. Questi servizi sono i seguenti:These services are the following:

Nota

Un altro servizio di .NET Framework 3,5 correlato alle estensioni di markup è IReceiveMarkupExtension l'interfaccia.Another service from .NET Framework 3.5 that is related to markup extensions is the IReceiveMarkupExtension interface. IReceiveMarkupExtensionnon è stata eseguita la migrazione ed [Obsolete] è contrassegnato per .NET Framework 4.IReceiveMarkupExtension was not migrated and is marked [Obsolete] for .NET Framework 4. Negli scenari in precedenza veniva usato IReceiveMarkupExtension , ora invece è necessario usare callback con attributi XamlSetMarkupExtensionAttribute .Scenarios that previously used IReceiveMarkupExtension should instead use XamlSetMarkupExtensionAttribute attributed callbacks. AncheAcceptedMarkupExtensionExpressionTypeAttribute è contrassegnato come [Obsolete].AcceptedMarkupExtensionExpressionTypeAttribute is also marked [Obsolete].

Funzionalità del linguaggio XAMLXAML Language Features

Diversi componenti e funzionalità del linguaggio XAML per WPF erano in precedenza inclusi nell'assembly PresentationFramework.Several XAML language features and components for WPF previously existed in the PresentationFramework assembly. Questi venivano implementati come una sottoclasse MarkupExtension per esporre gli utilizzi delle estensioni di markup nel markup XAML.These were implemented as a MarkupExtension subclass to expose markup extension usages in XAML markup. In .NET Framework 4 sono presenti nell'assembly System. XAML in modo che i progetti che non includono assembly WPF possano usare queste funzionalità a livello di linguaggio 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 usa queste stesse implementazioni per le applicazioni .NET Framework 4.WPF uses these same implementations for .NET Framework 4 applications. Come per gli altri casi elencati in questo argomento, i tipi di supporto continuano a esistere nello spazio dei nomi System.Windows.Markup per evitare l'interruzione di riferimenti precedenti.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.

Nella tabella seguente è riportato un elenco delle classi di supporto delle funzionalità del linguaggio XAML definite in System.Xaml:The following table contains a list of the XAML feature-support classes that are defined in System.Xaml.

Funzionalità del linguaggio XAMLXAML Language Feature UtilizzoUsage
ArrayExtension <x:Array ...>
NullExtension {x:Null}
StaticExtension {x:Static ...}
TypeExtension {x:Type ...}

Sebbene in System.Xaml possano non essere presenti classi di supporto specifiche, la logica generale per l'elaborazione delle funzionalità del linguaggio per XAML si trova ora in System.Xaml e nei relativi reader XAML e writer XAML implementati.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. Ad esempio, x:TypeArguments è un attributo elaborato da reader XAML e writer XAML delle implementazioni di System.Xaml. Può essere indicato nel flusso del nodo XAML, viene gestito nel contesto dello schema XAML predefinito (basato su CLR), dispone di una rappresentazione del sistema di tipi di XAML e così via.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. Di conseguenza, la documentazione di riferimento per tutte le funzionalità a livello di linguaggio XAML è inclusa come argomento secondario per XAML Services e per l'area generale specifica del set di documentazione .NET Framework, anziché far parte del set di documentazione WPF come argomento secondario di Avanzate (WPF) , come accade ancora nei set di documentazione 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 e classi di supportoValueSerializer and Supporting Classes

La classe ValueSerializer supporta la conversione di tipi in una stringa, in particolare per i casi di serializzazione di XAML in cui per la serializzazione possono essere necessarie più modalità o nodi nell'output.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 e .NET Framework 3,0, ValueSerializer per WPF era presente nell'assembly WindowsBase.In .NET Framework 3.5 and .NET Framework 3.0, the ValueSerializer for WPF was in the WindowsBase assembly. Nel .NET Framework 4, la ValueSerializer classe è in System. XAML ed è destinata a qualsiasi scenario di estensibilità XAML, non solo per quelli basati su 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. Viene inoltre eseguita la migrazione degli oggettiIValueSerializerContext (servizio di supporto) e DateTimeValueSerializer (sottoclasse specifica) a System.Xaml.IValueSerializerContext (a supporting service) and DateTimeValueSerializer (a specific subclass) are also migrated to System.Xaml.

In XAML per WPF erano inclusi vari attributi che potevano essere applicati a tipi CLR per fornire indicazioni sul relativo comportamento XAML.WPF XAML included several attributes that can be applied to CLR types to indicate something about their XAML behavior. Di seguito è riportato un elenco degli attributi esistenti negli assembly WPF in .NET Framework 3,5 e .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. Questi attributi vengono migrati a System. XAML in .NET Framework 4.These attributes are migrated to System.Xaml in .NET Framework 4.

Classi di vario tipoMiscellaneous Classes

L' IComponentConnector interfaccia era presente in WindowsBase nel .NET Framework 3,5 e .NET Framework 3,0, ma è presente in System. XAML in .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. L'interfacciaIComponentConnector è principalmente destinata al supporto per gli strumenti di supporto e compilatori di markup XAML.IComponentConnector is primarily intended for tooling support and XAML markup compilers.

L' INameScope interfaccia era presente in WindowsBase nel .NET Framework 3,5 e .NET Framework 3,0, ma è presente in System. XAML in .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 definisce le operazioni di base per un NameScope XAML.INameScope defines basic operations for a XAML namescope.

Le classi seguenti sono presenti sia negli assembly WPF che nell'assembly System. XAML nella .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

L'implementazione WPF si trova nello spazio dei nomi System.Windows.Markup e nell'assembly PresentationFramework.The WPF implementation is found in the System.Windows.Markup namespace, and PresentationFramework assembly. L'implementazione di System.Xaml si trova nello spazio dei nomi System.Xaml .The System.Xaml implementation is found in the System.Xaml namespace. Se si usano tipi WPF o si deriva da tipi WPF, è in genere necessario usare le implementazioni WPF di XamlReader e XamlWriter anziché le implementazioni di 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. Per altre informazioni, vedere la sezione Osservazioni in System.Windows.Markup.XamlReader e System.Windows.Markup.XamlWriter.For more information, see Remarks in System.Windows.Markup.XamlReader and System.Windows.Markup.XamlWriter.

Se si includono riferimenti agli assembly WPF a System.Xaml e si usano anche istruzioni include per gli spazi dei nomi System.Windows.Markup e System.Xaml , potrebbe essere necessario qualificare completamente le chiamate a queste API per risolvere i tipi senza ambiguità.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.

Vedere ancheSee also