Hol használják az XAML-t, milyen előnyei és hátrányai vannak: 2020. november 5., 4 perc 1784
Az XAML a Microsoft által kifejlesztett jelölőnyelv. Az objektumok inicializálására szolgál a .NET technológiákban. Ez egy egyszerű, XML-alapú deklaratív nyelv, némileg hasonló a webes fejlesztés HTML-jéhez. Az XAML segítségével egyszerűen létrehozhat, inicializálhat és tulajdonságokat állíthat be hierarchikus kapcsolatokkal rendelkező objektumokon.
Az XAML-t elsősorban grafikus interfészek fejlesztésére használják a WPF (Windows Presentation Foundation) technológiákban, valamint a Silverlight-ban. De a hatály nem korlátozódik erre. Ezt a nyelvet használják a WCF (Windows Communication Foundation) és a WF (Windows Workflow Foundation) technológiákban is, ahol semmi köze a grafikus felülethez.
Az XAML egyik szép dolga a cross-platform. Az XAML-t nemcsak a WPF-ben használják, hanem a Xamarin-ban is. Ez lehetővé teszi az asztali szoftverfejlesztők számára, hogy gyorsan elkezdjék építeni a mobil alkalmazásokat. Egy felületet egyszer írhat, és az Android, iOS és UWP (Windows 10) rendszereken fog működni. Ez lefordítja az XAML-t natív kódként ezekhez a platformokhoz.
Hogyan működik az XAML
Először is, egy kis elmélet. Az összes programozási nyelv két csoportra osztható: imperatív és deklaratív.
Az elengedhetetlenül szükségesek olyan jól ismert nyelvek, mint a C, C ++, C #, Pascal, Basic. Bennük elmondjuk, hogy mit kell tenni, de nem adjuk meg, hogy mi történjen (ezt általában leírjuk, és egységvizsgálatokon ellenőrizzük).
A deklaratív nyelvek viszont lehetővé teszik, hogy leírjuk azt az állapotot, amelyet el akarunk érni, de nem igényeljük (és általában nem is engedjük) leírni, hogyan juthatunk el ahhoz. Olyan nyelvekről beszélünk, mint az XAML, XML, HTML, SQL és mások. XAML esetén az XAML processzor felel azért, hogy miként lehet elérni egy adott állapotot.
Vessünk egy pillantást az XAML kód konvertálásának folyamatára egy WPF projektben.
Az XAML-t először a platform-specifikus XAML processzor alakítja belső kódgá, amely leírja a felhasználói felület elemét. A belső kód és a C # kód részleges osztályokon keresztül kommunikál egymással, majd a .NET fordító felépíti az alkalmazást.
Ha az XAML fájlunkat a processzor C # kódként értelmezi, miért van szükségünk egyáltalán az XAML-re? Itt az ideje, hogy beszéljünk az előnyeiről.
XAML előnyök
Az XAML nem kötelező része az alkalmazásnak – teljesen nélkülözhetjük, ha létrehozunk minden elemet a társított C # kód fájljában. Az XAML használatának azonban még mindig vannak előnyei:
- a grafikus felület elválasztásának képessége az alkalmazás logikájától – ennek köszönhetően a különböző szakemberek viszonylag függetlenül dolgozhatnak az alkalmazás különböző részein. Az interfész felett – tervezők, a logikai kód felett – programozók;
- tömörség, tisztaság;
- a karbantartás viszonylag egyszerű.
Tekintsük a következő példát. Tegyük fel, hogy a “Hello world!” Szöveget szeretnénk megjeleníteni a TextBlock elemben. Ha C # -ban tennénk, akkor így nézne ki:
TextBlock textBlock = új TextBlock (); textBlock.Text = "Helló világ!";
Ilyen XAML-ben:
Mint mondják, a kommentek feleslegesek. Nem érdekel az XAML feldolgozása – az XAML elemző ezt csinálja. Az XAML kód GUI alkalmazásokban történő használata elválasztja a grafikus felületet a program üzleti logikájától.
XAML szerkezet
Egy új WPF projekt alapértelmezés szerint XAML fájlokat tartalmaz. Például a projekt alapértelmezett MainWindow.xaml fájljának a következő jelölése lesz:
A HTML weboldal struktúrájához hasonlóan az elemek hierarchiája is létezik. A legfelső szintű elem az ablak, ez az alkalmazásablak. Emellett van még két legfelső szintű elem: az Oldal és az Alkalmazás.
Az ablak beágyazott üres Rács elemet tartalmaz, és a HTML elemekhez hasonlóan számos attribútum (Cím, Szélesség, Magasság). Megadják az ablak címét, szélességét és magasságát.
Az elemek használatához az XAML-ben névtereket is tartalmazunk. A második és a harmadik sor csak olyan szóköz, amely alapértelmezés szerint szerepel a projektben. Az xmlns attribútum pedig a névterek XML-ben történő meghatározásához szükséges.
- Például a http://schemas.microsoft.com/winfx/2006/xaml/presentation névtér tartalmazza a vezérlők többségének leírását és meghatározását.
- A http://schemas.microsoft.com/winfx/2006/xaml egy névtér, amely meghatároz néhány XAML-tulajdonságot, például a nevet vagy a kulcsot.
Az x előtag az xmlns: x definícióban azt jelenti, hogy az ebben a névtérben található elemek tulajdonságait az x – x: Name vagy x: Key előtaggal együtt fogjuk használni. Ugyanazt a névteret használják már az x első sorában: Class = “XamlApp.MainWindow” – itt létrejön egy új MainWindow osztály és a hozzá tartozó kódfájl, ahol az alkalmazásablak logikája fel lesz írva.
Elemek és attribútumaik
Az XAML egyszerűen meghatározhatja az elemeket és azok tulajdonságait. Minden elemnek nyitott és zárt címkével kell rendelkeznie, mint az Window esetében:
Ablak>
Vagy az elem rövidíthető egy záró perjelrel a végén, például:
Az XAML minden eleme egy adott C # osztálynak felel meg. Például a Button elem megfelel a System.Windows.Controls.Button osztálynak. Adjunk hozzá egy gombot az ablak elrendezéséhez:
Először jön a legfelső szintű elem – Ablak. Ekkor a beágyazott Grid elem egy tároló a többi elem számára. És már van egy Button eleme, amely a gombot ábrázolja.
A gombhoz tulajdonságokat határozhatunk meg attribútumként. Az x attribútumok itt vannak megadva: Név (a gomb neve), Szélesség, Magasság és Tartalom. Az XAML jelölés definiálása után elindítjuk a projektet – és az összes XAML kódot meglátjuk a grafikán, vagyis a gombunkon:
Az XAML hátrányai
Mint minden nyelvnek, az XAML-nek is vannak hátrányai. Néha sok kód szükséges egy GUI megírásához. Például ahhoz, hogy egy gomb megváltoztassa a kódot az egérmutatón, a következő XAML-re van szükség:
Ugyanakkor a CSS-sel sokkal könnyebben megtehető:
.gomb {háttér: # 333; } .gomb: lebegés {háttér: # 444; }
Az XAML egyik legfőbb jellemzője az adatmegkötés. Ez egy erőteljes fejlesztő eszköz, de problémákat okozhat, amelyeket nehéz lehet kitalálni. Ezért fordulhatnak elő:
- a kötés helytelen;
- A DataContext nincs megadva;
- üres tárgyat adnak át;
- stb.
Miután elsajátította az XAML-t a WPF számára, érdemes továbblépnie a Xamarin.Forms fejlesztésére. De kissé eltérő XAML-t használ: egyes elemeknek más a neve (StackLayout a StackPanel helyett). Az adatkötés szintén más módon jön létre, nem pedig a WPF-ben megszokott módon.
Következtetés
Az XAML egy igazán hatékony nyelv az alkalmazások grafikus felhasználói felületeinek leírására. Miután elsajátította, érezni fogja, hogy a fejlődés könnyebbé és élvezetesebbé válik. Sőt, az XAML könnyen olvasható nemcsak a programozók, hanem a tervezők számára is. És lehetővé teszi gyönyörű alkalmazások létrehozását egy barátságos felhasználói felülettel.