Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.
XAML-Related attribútumok
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.
XAML-hez kapcsolódó osztályok megosztott névvel, amelyek a WPF-ben és a System.Xaml-ben léteznek
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.
.NET Desktop feedback