Typy migrované z WPF do System. XAML

v .NET Framework 3,5 a .NET Framework 3,0, jak Windows Presentation Foundation (WPF), tak programovací model Windows Workflow Foundation implementaci jazyka XAML. Mnohé z veřejných typů, které poskytly rozšíření pro implementaci WPF XAML, existují v sestaveních WindowsBase, PresentationCore a PresentationFramework. podobně veřejné typy, které v sestavení System. Workflow. ComponentModel poskytly rozšíření pro programovací model Windows Workflow Foundation XAML. v .NET Framework 4 byly některé typy související s jazykem xaml migrovány do sestavení System. XAML. společná implementace .NET Framework jazykových služeb jazyka xaml umožňuje mnoho scénářů rozšiřitelnosti xaml, které byly původně definovány implementací XAML konkrétního rozhraní, ale nyní jsou součástí celkové podpory jazyka xaml .NET Framework 4. Tento článek obsahuje seznam typů, které byly migrovány, a popisuje problémy související s migrací.

Sestavení a obory názvů

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

v .NET Framework 4 existuje nový System.Xaml obor názvů a nové sestavení System. Xaml. Mnohé z 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 jazyka XAML. V rámci zpřístupnění pro obecnější scénáře jsou typy typu předávány z původního sestavení WPF do sestavení System. XAML. to umožňuje scénáře rozšiřitelnosti XAML bez nutnosti zahrnutí sestavení jiných rozhraní (například WPF a programovací model Windows Workflow Foundation).

U migrovaných typů zůstává většina typů v System.Windows.Markup oboru názvů. Bylo by částečně zabráněno přerušení mapování oboru názvů CLR ve stávajících implementacích pro jednotlivé soubory. v důsledku toho System.Windows.Markup obor názvů v .NET Framework 4 obsahuje kombinaci obecných typů podpory jazyka xaml (ze sestavení System. XAML) a typů, 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 dříve existoval v sestavení WPF, má podporu předávání typů ve verzi 4 sestavení WPF.

Typy podpory jazyka XAML v pracovním postupu

Windows Jazyk Workflow Foundation také poskytuje typy podpory XAML a v mnoha případech mají stejné krátké názvy jako ekvivalent WPF. následuje seznam programovací model Windows Workflow Foundation typy podpory jazyka XAML:

tyto typy podpory stále existují v programovací model Windows Workflow Foundation sestavení pro .NET Framework 4 a lze je nadále používat pro konkrétní programovací model Windows Workflow Foundation aplikace. neměly by však být odkazovány aplikacemi nebo architekturami, které nepoužívají programovací model Windows Workflow Foundation.

MarkupExtension

v .NET Framework 3,5 a .NET Framework 3,0 MarkupExtension byla třída pro WPF v WindowsBase sestavení. MarkupExtensionv sestavení System. Workflow. ComponentModel existovala paralelní třída pro programovací model Windows Workflow Foundation. v .NET Framework 4 MarkupExtension je třída migrována do sestavení System. Xaml. v .NET Framework 4 MarkupExtension je určena pro jakýkoli scénář rozšiřitelnosti xaml, který používá služby .net xaml, nikoli pouze pro ty, které se vytvářejí v konkrétních rozhraních. Pokud je to možné, konkrétní architektury nebo uživatelský kód v rozhraní by měly také sestavit MarkupExtension třídu pro rozšíření XAML.

Třídy MarkupExtension podporující třídy služeb

.NET Framework 3,5 a .NET Framework 3,0 pro WPF poskytuje několik služeb, které byly k dispozici pro MarkupExtension implementátory a TypeConverter implementace pro podporu typu a vlastností v jazyce XAML. Tyto služby jsou následující:

Poznámka

další službou z .NET Framework 3,5, která souvisí s rozšířeními značek, je IReceiveMarkupExtension rozhraní. IReceiveMarkupExtensionnebyla migrována a je označena [Obsolete] pro .NET Framework 4. Ve scénářích, které dřív použili, IReceiveMarkupExtension by místo toho měly používat XamlSetMarkupExtensionAttribute zpětná volání s atributy. AcceptedMarkupExtensionExpressionTypeAttribute je také označeno [Obsolete] .

Funkce jazyka XAML

Několik funkcí jazyka XAML a komponent pro WPF existovalo v PresentationFramework sestavení. Tyto byly implementovány jako MarkupExtension podtřídou pro zveřejnění použití rozšíření značek v kódu XAML. v .NET Framework 4 existují v sestavení System. Xaml tak, 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 ostatní případy, které jsou uvedeny v tomto tématu, pomocné typy nadále existují v System.Windows.Markup oboru názvů, aby nedošlo k přerušení předchozích odkazů.

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

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

I když System. XAML nemůže mít konkrétní třídy podpory, je obecná logika pro zpracování jazykových funkcí pro jazyk XAML nyní uložena v souboru System. XAML a v jeho implementovaných čtecích modulech XAML a zapisovači XAML. Například x:TypeArguments je atribut, který je zpracován čtečkami XAML a moduly XAML z implementace System. XAML. může být zaznamenán v datovém proudu uzlu XAML, který zpracovává ve výchozím kontextu schématu XAML (CLR), má reprezentaci systému typů XAML a tak dále. Další informace o referenční dokumentaci pro XAML naleznete v tématu XAML Services.

Objekt ValueSerializer nemůže a podpůrné třídy

ValueSerializerTřída podporuje převod typu 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 .NET Framework 3,5 a .NET Framework 3,0 ValueSerializer byl pro WPF v WindowsBase sestavení. v .NET Framework 4 ValueSerializer je třída v System. Xaml a je určena pro jakýkoli scénář rozšiřitelnosti Xaml, nikoli pouze pro ty, které se vytvářejí v WPF. IValueSerializerContext (podpůrná služba) a DateTimeValueSerializer (konkrétní podtřída) se migrují také na System. XAML.

WPF XAML obsahuje několik atributů, které lze použít na typy CLR pro indikaci toho, jak se chování XAML. následuje seznam atributů, které existovaly v sestaveních WPF v .NET Framework 3,5 a .NET Framework 3,0. tyto atributy jsou migrovány do souboru System. Xaml v .NET Framework 4.

Různé třídy

IComponentConnectorrozhraní existovalo v WindowsBase v .NET Framework 3,5 a .NET Framework 3,0, ale existuje v souboru System. Xaml v .NET Framework 4. IComponentConnector je primárně určena pro podporu nástrojů a kompilátory kódu XAML.

INameScoperozhraní existovalo v WindowsBase v .NET Framework 3,5 a .NET Framework 3,0, ale existuje v souboru System. Xaml v .NET Framework 4. INameScope definuje základní operace pro namescope XAML.

v sestaveních WPF i v sestavení System. Xaml v .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 v PresentationFramework sestavení. V oboru názvů se nachází implementace System. XAML System.Xaml . Pokud používáte typy WPF nebo jsou odvozeny z typů WPF, měli byste obvykle použít implementace WPF pro XamlReader a XamlWriter namísto implementace System. XAML. Další informace najdete v tématu poznámky v System.Windows.Markup.XamlReader a System.Windows.Markup.XamlWriter .

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