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 WPF implementované pro podporu XAML obecně v oboru názvů System.Windows.Markup. Většina těchto typů byla v sestavení WindowsBase.
V rozhraní .NET Framework 4 existuje nový obor názvů System.Xaml 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 oboru názvů System.Windows.Markup. 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 byla třída MarkupExtension pro WPF v sestavení WindowsBase. Paralelní třída pro Windows Workflow Foundation MarkupExtensionexistovala v sestavení System.Workflow.ComponentModel. V rozhraní .NET Framework 4 se třída MarkupExtension migruje do sestavení System.Xaml. V rozhraní .NET Framework 4 je MarkupExtension určen pro jakýkoli scénář rozšiřitelnosti XAML, který používá služby .NET XAML, nejen pro ty, 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 architektury také vycházet z třídy MarkupExtension 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 TypeConverter implementace pro podporu použití typů a vlastností v XAML. Tyto služby jsou následující:
Poznámka
Další služba z rozhraní .NET Framework 3.5, která souvisí s rozšířeními značek, je rozhraní IReceiveMarkupExtension.
IReceiveMarkupExtension nebylo migrováno a je označeno [Obsolete]
pro rozhraní .NET Framework 4. Scénáře, které dříve používaly IReceiveMarkupExtension, by místo toho měly používat zpětná volání s přidělenými atributy XamlSetMarkupExtensionAttribute.
AcceptedMarkupExtensionExpressionTypeAttribute je také označen jako [Obsolete]
.
Funkce jazyka XAML
V sestavení PresentationFramework dříve existovalo několik jazykových funkcí a komponent jazyka XAML pro WPF. Tyto typy byly implementovány jako podtřída MarkupExtension za účelem odhalení použití rozšíření značkovacího jazyka v značení 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 oboru názvů System.Windows.Markup, 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 | Použ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. Například x:TypeArguments
je atribut, který zpracovávají čtenáři XAML a zapisovače XAML z implementací System.Xaml, lze zaznamenat v XAML toku uzlů, má zpracování v rámci výchozího XAML schématického kontextu založeného na CLR, má reprezentaci typu XAML atd. Další informace o referenční dokumentaci pro XAML naleznete v tématu XAML Services.
ValueSerializer a podpůrné třídy
Třída ValueSerializer podporuje převod typů na řetězec, zejména pro případy serializace XAML, kdy serializace může vyžadovat více režimů nebo uzlů ve výstupu. V .NET Framework 3.5 a .NET Framework 3.0 bylo ValueSerializer pro WPF v sestavení WindowsBase. V rozhraní .NET Framework 4 je třída ValueSerializer v System.Xaml a je určena pro jakýkoli scénář rozšiřitelnosti XAML, nejen pro ty, které jsou postavené na WPF. IValueSerializerContext (podpůrná služba) a DateTimeValueSerializer (konkrétní podtřída) se také migrují do System.Xaml.
atributy XAML-Related
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.
Třídy související s XAML se sdílenými názvy, které existují ve WPF a System.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 oboru názvů System.Windows.Markup a sestavení PresentationFramework. Implementace System.Xaml se nachází v oboru názvů System.Xaml. Pokud používáte typy WPF nebo odvozujete z typů WPF, měli byste místo implementací System.Xaml použít implementace WPF XamlReader a XamlWriter. Další informace naleznete v tématu Poznámky v System.Windows.Markup.XamlReader a System.Windows.Markup.XamlWriter.
Pokud zahrnete odkazy na sestavení WPF i System.Xaml a používáte příkazy include
pro obory názvů System.Windows.Markup i System.Xaml, možná budete muset plně kvalifikovat volání těchto rozhraní API, aby bylo možné vyřešit typy bez nejednoznačnosti.
.NET Desktop feedback