Sdílet prostřednictvím


Typy migrované z WPF do System.Xaml

V rozhraní .NET Framework 3.5 a .NET Framework 3.0 obsahovaly windows Presentation Foundation (WPF) i Windows Workflow Foundation implementaci jazyka XAML. Mnoho veřejných typů, které poskytovaly rozšiřitelnost pro implementaci WPF XAML existovaly v sestaveních WindowsBase, PresentationCore a PresentationFramework. Stejně tak veřejné typy, které poskytovaly rozšiřitelnost pro Windows Workflow Foundation XAML existovaly v sestavení System.Workflow.ComponentModel. V rozhraní .NET Framework 4 byly některé typy související s XAML migrovány do sestavení System.Xaml. Běžná implementace jazykových služeb XAML v rozhraní .NET Framework umožňuje mnoho scénářů rozšiřitelnosti XAML, které byly původně definovány implementací XAML konkrétní architektury, ale jsou nyní součástí celkové podpory jazyka XAML rozhraní .NET Framework 4. Tento článek uvádí typy, které byly migrovány, a popisuje problémy související s migrací.

Sestavení a obory názvů

V rozhraní .NET Framework 3.5 a .NET Framework 3.0 byly typy, které WPF implementovaly pro podporu XAML, obecně v System.Windows.Markup oboru názvů. Většina těchto typů byla v sestavení WindowsBase.

V rozhraní .NET Framework 4 je nový System.Xaml obor názvů a nové sestavení System.Xaml. Mnoho typů, které byly původně implementovány pro WPF XAML, jsou nyní poskytovány jako body rozšiřitelnosti nebo služby pro jakoukoli implementaci XAML. V rámci jejich zpřístupnění pro obecnější scénáře jsou typy přeposílané z původního sestavení WPF do sestavení System.Xaml. To umožňuje scénáře rozšiřitelnosti XAML bez nutnosti zahrnout sestavení jiných architektur (například WPF a Windows Workflow Foundation).

U migrovaných typů zůstává většina typů v System.Windows.Markup oboru názvů. To bylo částečně, aby se zabránilo porušení mapování oborů názvů CLR v existujících implementacích na základě jednotlivých souborů. V důsledku toho System.Windows.Markup obor názvů v rozhraní .NET Framework 4 obsahuje kombinaci obecných typů podpory jazyka XAML (ze sestavení System.Xaml) a typy, které jsou specifické pro implementaci WPF XAML (z WindowsBase a dalších sestavení WPF). Jakýkoli typ, který byl migrován do System.Xaml, ale existoval dříve v sestavení WPF, má podporu předávání typů ve verzi 4 sestavení WPF.

Typy podpory XAML pracovního postupu

Windows Workflow Foundation také poskytoval typy podpory XAML a v mnoha případech měly stejné krátké názvy jako ekvivalent WPF. Následuje seznam typů podpory XAML pro Windows Workflow Foundation:

Tyto typy podpory stále existují v sestaveních Windows Workflow Foundation pro rozhraní .NET Framework 4 a lze je nadále používat pro konkrétní aplikace Windows Workflow Foundation; Na aplikace ani architektury, které nepoužívají Windows Workflow Foundation, by však neměly odkazovat.

MarkupExtension

V rozhraní .NET Framework 3.5 a .NET Framework 3.0 MarkupExtension byla třída WPF v sestavení WindowsBase. Paralelní třída pro Windows Workflow Foundation, MarkupExtensionexistovala v sestavení System.Workflow.ComponentModel. V rozhraní .NET Framework 4 MarkupExtension se třída migruje do sestavení System.Xaml. V rozhraní .NET Framework 4 je určen pro jakýkoli scénář rozšiřitelnosti XAML, který používá .NET XAML Services, nejen pro ty, MarkupExtension které jsou založeny na konkrétních architekturách. Pokud je to možné, měly by konkrétní architektury nebo uživatelský kód v rámci této architektury také vycházet z MarkupExtension třídy pro rozšíření XAML.

MarkupExtension – podpůrné třídy služeb

Rozhraní .NET Framework 3.5 a .NET Framework 3.0 pro WPF poskytovalo několik služeb, které byly k dispozici pro MarkupExtension implementátory a implementace pro podporu použití typů a TypeConverter vlastností v XAML. Tyto služby jsou následující:

Poznámka:

Rozhraním je IReceiveMarkupExtension jiná služba z rozhraní .NET Framework 3.5, která souvisí s rozšířeními značek. IReceiveMarkupExtension nebyl migrován a je označen [Obsolete] pro rozhraní .NET Framework 4. Scénáře, které jste použili IReceiveMarkupExtension dříve, by měly místo toho používat XamlSetMarkupExtensionAttribute atributy zpětného volání. AcceptedMarkupExtensionExpressionTypeAttributeje také označen .[Obsolete]

Funkce jazyka XAML

V sestavení PresentationFramework existovalo v sestavení PresentationFramework několik jazykových funkcí a komponent jazyka XAML pro WPF. Tyto typy byly implementovány jako MarkupExtension podtřída pro zveřejnění použití rozšíření značek v kódu XAML. V rozhraní .NET Framework 4 existují v sestavení System.Xaml, aby projekty, které neobsahují sestavení WPF, mohly používat tyto funkce na úrovni jazyka XAML. WPF používá stejné implementace pro aplikace .NET Framework 4. Stejně jako u ostatních případů uvedených v tomto tématu existují podpůrné typy i nadále v System.Windows.Markup oboru názvů, aby nedocházelo k porušení předchozích odkazů.

Následující tabulka obsahuje seznam tříd podpory funkcí XAML, které jsou definovány v System.Xaml.

Funkce jazyka XAML Využití
ArrayExtension <x:Array ...>
NullExtension {x:Null}
StaticExtension {x:Static ...}
TypeExtension {x:Type ...}

I když System.Xaml nemusí mít specifické třídy podpory, obecná logika pro zpracování jazykových funkcí jazyka XAML se teď nachází v System.Xaml a jeho implementované čtečky XAML a zapisovače XAML. Je to například atribut, x:TypeArguments který zpracovává čtenáři XAML a zapisovače XAML z implementací System.Xaml. Je možné ho zaznamenat v datovém proudu uzlu XAML, který má zpracování ve výchozím kontextu schématu (založeném na CLR) XAML, má reprezentaci systému typů XAML atd. Další informace o referenční dokumentaci pro XAML naleznete v tématu Služby XAML.

ValueSerializer a podpůrné třídy

Třída ValueSerializer podporuje převod typů na řetězec, zejména pro případy serializace XAML, kde serializace může vyžadovat více režimů nebo uzlů ve výstupu. V rozhraní .NET Framework 3.5 a .NET Framework 3.0 ValueSerializer byla funkce WPF v sestavení WindowsBase. V rozhraní .NET Framework 4 je třída v System.Xaml a je určená pro jakýkoli scénář rozšiřitelnosti XAML, nejen pro ty, ValueSerializer které jsou postavené na WPF. IValueSerializerContext (podpůrná služba) a DateTimeValueSerializer (konkrétní podtřída) se také migrují do System.Xaml.

WPF XAML obsahovalo několik atributů, které lze použít u typů CLR, které označují něco o jejich chování XAML. Následuje seznam atributů, které existovaly v sestaveních WPF v rozhraní .NET Framework 3.5 a .NET Framework 3.0. Tyto atributy se migrují do System.Xaml v rozhraní .NET Framework 4.

Různé třídy

Rozhraní IComponentConnector existovalo ve WindowsBase v rozhraní .NET Framework 3.5 a .NET Framework 3.0, ale existuje v System.Xaml v rozhraní .NET Framework 4. IComponentConnector je primárně určený pro podporu nástrojů a kompilátory značek XAML.

Rozhraní INameScope existovalo ve WindowsBase v rozhraní .NET Framework 3.5 a .NET Framework 3.0, ale existuje v System.Xaml v rozhraní .NET Framework 4. INameScope definuje základní operace pro názvový rozsah XAML.

V sestaveních WPF i v sestavení System.Xaml v rozhraní .NET Framework 4 existují následující třídy:

XamlReader

XamlWriter

XamlParseException

Implementace WPF se nachází v System.Windows.Markup oboru názvů a PresentationFramework sestavení. Implementace System.Xaml se nachází v System.Xaml oboru názvů. Pokud používáte typy WPF nebo odvozujete z typů WPF, měli byste obvykle použít implementace XamlReader WPF a XamlWriter ne implementace System.Xaml. Další informace naleznete v části Poznámky v System.Windows.Markup.XamlReader a System.Windows.Markup.XamlWriter.

Pokud zahrnete odkazy na sestavení WPF i System.Xaml a také používáte include příkazy pro System.Windows.Markup obě i System.Xaml obory názvů, možná budete muset plně kvalifikovat volání těchto rozhraní API, aby bylo možné přeložit typy bez nejednoznačnosti.