Megosztás a következőn keresztül:


A WPF-ből a System.Xaml-be migrált típusok

A .NET-keretrendszer 3.5-ös és .NET-keretrendszer 3.0-s verziójában a Windows Presentation Foundation (WPF) és a Windows Workflow Foundation is tartalmazott egy XAML nyelvi implementációt. A WPF XAML implementációhoz szükséges bővíthetőséget biztosító nyilvános típusok közül sok a WindowsBase, a PresentationCore és a PresentationFramework szerelvényekben volt. Hasonlóképpen, a Windows Workflow Foundation XAML-hez bővíthetőséget biztosító nyilvános típusok is léteztek a System.Workflow.ComponentModel szerelvényben. A .NET-keretrendszer 4-ben az XAML-hez kapcsolódó néhány típus át lett migrálva a System.Xaml szerelvénybe. Az XAML nyelvi szolgáltatások gyakori .NET-keretrendszer-implementációja számos XAML bővíthetőségi forgatókönyvet tesz lehetővé, amelyeket eredetileg egy adott keretrendszer XAML-implementációja definiált, de most már a .NET Framework 4 XAML nyelvi támogatásának része. Ez a cikk felsorolja a migrált típusokat, és ismerteti a migrálással kapcsolatos problémákat.

Szerelvények és névterek

A .NET-keretrendszer 3.5-ös és .NET-keretrendszer 3.0-s verziójában a WPF által az XAML támogatásához implementált típusok általában a System.Windows.Markup névtérben voltak. A legtöbb ilyen típus a WindowsBase-szerelvényben volt.

A .NET-keretrendszer 4-ben egy új System.Xaml névtér és egy új System.Xaml-szerelvény található. A WPF XAML-hez eredetileg implementált számos típus bővíthetőségi pontként vagy szolgáltatásként érhető el az XAML bármely implementációja számára. Az általánosabb forgatókönyvekhez való elérhetővé tétel részeként a típusok az eredeti WPF-szerelvényről a System.Xaml szerelvényre továbbítódnak. Ez lehetővé teszi az XAML bővíthetőségi forgatókönyveket anélkül, hogy más keretrendszerek (például a WPF és a Windows Workflow Foundation) szerelvényeit kellene tartalmaznia.

Migrált típusok esetén a legtöbb típus a System.Windows.Markup névtérben marad. Ez részben azért volt, hogy elkerülje a CLR-névtér-leképezések feltörését a meglévő implementációkban fájlonként. Ennek eredményeképpen a .NET-keretrendszer 4-ben található System.Windows.Markup névtér az általános XAML nyelvi támogatási típusok (a System.Xaml szerelvényből) és a WPF XAML-implementációra jellemző típusok keverékét tartalmazza (a WindowsBase-ből és más WPF-szerelvényekből). A System.Xaml-be migrált, de korábban egy WPF-szerelvényben létező típus rendelkezik típustovábbítási támogatással a WPF-szerelvény 4- es verziójában.

Munkafolyamat XAML-támogatási típusai

A Windows Workflow Foundation XAML-támogatási típusokat is biztosított, és ezek sok esetben azonos rövid nevek voltak a WPF-ekvivalensekkel. Az alábbi lista a Windows Workflow Foundation XAML támogatási típusait tartalmazza:

Ezek a támogatási típusok továbbra is léteznek a .NET-keretrendszer 4-hez készült Windows Workflow Foundation-szerelvényekben, és továbbra is használhatók bizonyos Windows Workflow Foundation-alkalmazásokhoz; azonban nem hivatkozhatnak rájuk olyan alkalmazások vagy keretrendszerek, amelyek nem használják a Windows Workflow Foundationt.

MarkupExtension

A .NET Framework 3.5 és a .NET Framework 3.0 rendszerben a WPF MarkupExtension osztálya a WindowsBase szerelvényben volt. A Windows Workflow Foundation MarkupExtensionpárhuzamos osztálya a System.Workflow.ComponentModel szerelvényben létezett. A .NET-keretrendszer 4-ben a MarkupExtension osztály a System.Xaml szerelvénybe lesz migrálva. A .NET-keretrendszer 4-ben a MarkupExtension minden XAML bővíthetőségi forgatókönyvhöz készült, amely .NET XAML-szolgáltatásokat használ, nem csak az adott keretrendszerekre épülőekhez. Ha lehetséges, a keretrendszer bizonyos keretrendszereinek vagy felhasználói kódjának is az XAML-bővítmény MarkupExtension osztályára kell épülnie.

MarkupExtension támogató szolgáltatásosztályok

A .NET Framework 3.5 és a .NET Framework 3.0 for WPF számos olyan szolgáltatást biztosított, amely elérhető volt MarkupExtension implementátorok és TypeConverter implementációk számára az XAML típus-/tulajdonsághasználatának támogatásához. Ezek a szolgáltatások a következők:

Megjegyzés:

A jelölőbővítményekhez kapcsolódó .NET-keretrendszer 3.5 egy másik szolgáltatása a IReceiveMarkupExtension felület. IReceiveMarkupExtension nem lett migrálva, és a .NET-keretrendszer 4-hez [Obsolete] jelölve van. Azoknak a forgatókönyveknek, amelyek korábban IReceiveMarkupExtension-t használtak, mostantól XamlSetMarkupExtensionAttribute attribútummal rendelkező visszahívásokat kell használniuk. AcceptedMarkupExtensionExpressionTypeAttribute [Obsolete]is meg van jelölve.

XAML nyelvi funkciók

A WPF-hez korábban számos XAML nyelvi funkció és összetevő létezett a PresentationFramework szerelvényben. Ezek MarkupExtension alosztályként lettek implementálva, hogy elérhetővé tegyék a korrektúrakiterjesztések használatát az XAML-korrektúrában. A .NET Framework 4-ben ezek a System.Xaml szerelvényben találhatók, így azok a projektek, amelyek nem tartalmaznak WPF-szerelvényeket, használhatják ezeket az XAML nyelvi szintű funkciókat. A WPF ugyanazokat az implementációkat használja a .NET Framework 4-alkalmazásokhoz. A jelen témakörben felsorolt többi esethez hasonlóan a kiegészítő típusok továbbra is léteznek a System.Windows.Markup névtérben a korábbi hivatkozások feltörésének elkerülése érdekében.

Az alábbi táblázat a System.Xaml-ben definiált XAML szolgáltatástámogatási osztályok listáját tartalmazza.

XAML nyelvi funkció Használat
ArrayExtension <x:Array ...>
NullExtension {x:Null}
StaticExtension {x:Static ...}
TypeExtension {x:Type ...}

Bár előfordulhat, hogy a System.Xaml nem rendelkezik konkrét támogatási osztályokkal, az XAML nyelv nyelvi funkcióinak feldolgozására szolgáló általános logika már a System.Xaml-ben és annak implementált XAML-olvasóiban és XAML-íróiban található. A x:TypeArguments például egy attribútum, amelyet xAML-olvasók és XAML-írók dolgoznak fel a System.Xaml implementációkból; az XAML-csomópont adatfolyamában megfigyelhető, az alapértelmezett (CLR-alapú) XAML-sémakörnyezetben van kezelve, XAML típusú rendszerábrázolással rendelkezik stb. További információ az XAML referenciadokumentációjáról: XAML Services.

ValueSerializer és támogató osztályok

A ValueSerializer osztály támogatja a sztringre való típusátalakítást, különösen olyan XAML szerializálási esetekben, ahol a szerializálás több módot vagy csomópontot igényelhet a kimenetben. A .NET-keretrendszer 3.5-ös és .NET-keretrendszer 3.0-s verziója esetében a WPF ValueSerializer a WindowsBase-szerelvényben volt. A .NET-keretrendszer 4-ben a ValueSerializer osztály a System.Xaml-ben található, és minden XAML bővíthetőségi forgatókönyvhöz készült, nem csak a WPF-re épülőekhez. IValueSerializerContext (egy támogató szolgáltatás) és DateTimeValueSerializer (egy adott alosztály) is át lesznek migrálva a System.Xaml-be.

A WPF XAML számos attribútumot tartalmazott, amelyek a CLR-típusokra alkalmazhatók, hogy jelezzék az XAML-viselkedésüket. Az alábbiakban felsoroljuk a .NET-keretrendszer 3.5-ös és .NET-keretrendszer 3.0-s verziójában a WPF-szerelvényekben meglévő attribútumokat. Ezeket az attribútumokat a rendszer a System.Xaml-be migrálja a .NET-keretrendszer 4-ben.

Egyéb osztályok

A IComponentConnector felület a WindowsBase-ben a .NET Framework 3.5-ben és a .NET-keretrendszer 3.0-s verziójában volt, de a System.Xaml-ben létezik a .NET-keretrendszer 4-ben. IComponentConnector elsősorban eszköztámogatási és XAML-jelölőfordítókhoz készült.

A INameScope felület a WindowsBase-ben a .NET Framework 3.5-ben és a .NET-keretrendszer 3.0-s verziójában volt, de a System.Xaml-ben létezik a .NET-keretrendszer 4-ben. INameScope definiálja az XAML-névtávcső alapműveleteit.

A következő osztályok a WPF-szerelvényekben és a System.Xaml szerelvényben is léteznek a .NET-keretrendszer 4-ben:

XamlReader

XamlWriter

XamlParseException

A WPF-implementáció a System.Windows.Markup névtérben és a PresentationFramework szerelvényben található. A System.Xaml implementáció a System.Xaml névtérben található. Ha WPF-típusokat használ, vagy WPF-típusokból származik, a System.Xaml-implementációk helyett általában a XamlReader és a XamlWriter WPF-implementációit kell használnia. További információért lásd a System.Windows.Markup.XamlReader és System.Windows.Markup.XamlWritermegjegyzéseket.

Ha a WPF-szerelvényekre és a System.Xaml-ra is hivatkozik, és include utasításokat is használ a System.Windows.Markup és a System.Xaml névterekhez, előfordulhat, hogy a típusok kétértelmű megoldása érdekében teljes mértékben minősítenie kell a hívásokat ezekhez az API-khoz.