Nyelv
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.
Az XAML (Extensible Application Markup Language) a Felhasználói felület WinUI-alkalmazásokban való definiálásához használt deklaratív korrektúranyelv. Leírhatja a felhasználói felület struktúráját és tulajdonságait a fájlokban .xaml , és kezelheti a logikát és az eseményeket egy párosított kód mögötti fájlban.
Megjegyzés:
A C# és a C++/WinRT winUI 3/Windows App SDK és UWP-alkalmazásokhoz egyaránt támogatott. A C++/CX csak az UWP-re vonatkozik, és a WinUI 3 esetében nem támogatott.
Mi az az XAML?
Az XAML egy XML-alapú nyelv objektumok létrehozásához és tulajdonságaik beállításához. A felhasználói felület elemeit – gombokat, szövegdobozokat, elrendezéseket – korrektúraként deklarálhatja, és egy kód mögötti fájl használatával reagálhat az eseményekre, és futtatáskor módosíthatja ezeket az elemeket.
Mivel az XAML szövegalapú felcserélő formátum, a tervezők és a fejlesztők egymástól függetlenül dolgozhatnak: a tervezők az XAML-ben készítik el a vizualizációs struktúrát, a fejlesztők kód mögé építik a logikát, és mindkettő egymás blokkolása nélkül is iterálhat.
Alapszintű XAML szintaxis
Az összes érvényes XAML is érvényes XML, de az XAML saját fogalmakat ad hozzá. A tulajdonságelem szintaxisa például lehetővé teszi, hogy egy tulajdonságot beágyazott XML-elemként állítson be attribútumsztring helyett – érvényes XML, de az XAML-ben extra jelentéssel.
A szintaxis teljes részleteiért tekintse meg az XAML szintaxisát ismertető útmutatót.
XAML és Visual Studio
Visual Studio XAML-szerkesztője IntelliSense, automatikus kiegészítés és vizuális tervezési felületet biztosít. A hibák a fordítás előtt hullámos vonalként jelennek meg. Nem kell minden szintaxisszabályt megjegyeznie – hagyja, hogy az IDE vezessen.
XAML-névterek
Minden XAML-fájl névtereket deklarál a gyökérelemben. Egy tipikus WinUI-oldal kettővel kezdődik:
<Page
x:Class="Application1.BlankPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>
-
Alapértelmezett névtér (
xmlns=): Az összes beépített WinUI-vezérlőt, szöveget, ábrát, adatkötést és stílustípust tartalmazza. Az XAML nagy része ezt a névteret használja előtag nélkül. -
XAML-nyelvi névtér (
xmlns:x=): A(z)x:előtaghoz van rendelve, és alapvető nyelvi funkciókat biztosít.
A x: névtér
| Attribute | Alkalmazás célja |
|---|---|
| x:Kulcs | Egy erőforrás egyedi kulcsa egy ResourceDictionary |
| x:Class | Az XAML-fájl csatolása a kód mögötti osztályhoz |
| x:Név | Futtatókörnyezet nevét rendeli hozzá, hogy a mögöttes kód hivatkozzon az elemre |
| x:UID | A honosított erőforrás-helyettesítés elemeinek megjelölése |
| XAML belső típusok | Egyszerű értékeket (például x:Boolean) fejez ki objektumelemként |
Egyéni típusok leképezése
Ha saját vagy harmadik féltől származó kódtártípusokat szeretne használni az XAML-ben, deklaráljon egy névtérelőtagot, amely a kódnévtérre van leképezve:
xmlns:myTypes="using:myCompany.myTypes"
Ezután hivatkozzon ezekre a típusokra az előtaggal:
<myTypes:CustomButton/>
További részletekért, beleértve a C++/CX szempontokat, tekintse meg az XAML-névtereket és a névtérleképezést.
Tervezői és kompatibilitási névterek
Az eszköz által létrehozott XAML-ben gyakran jelennek meg d: (tervező) és mc: (korrektúrakompatibilitás) előtagok. Ezek a tervezéskori fejlesztőeszközöket támogatják, és futásidőben biztonságosan figyelmen kívül hagyhatók. További információ: Egyéb XAML-névterek.
Jelölő bővítmények
A korrektúrakiterjesztésekkel olyan tulajdonságot állíthat be, amely nem fejezhető ki egyszerű sztringként – például megosztott erőforrásra vagy adatkötésre való hivatkozásként. Kapcsos zárójel szintaxist használnak:
<Button Style="{StaticResource SearchButtonStyle}"/>
{StaticResource} nélkül bőbeszédű tulajdonságelem-szintaxist kellene használnod ahhoz, hogy Style-t rendelj hozzá. A jelölőbővítmények tömörré teszik a XAML-t.
Windows-futtatókörnyezet XAML támogatja ezeket a korrektúrakiterjesztéseket:
| Extension | Alkalmazás célja |
|---|---|
| {x:Bind} | Fordításkori adatkötés (legjobb teljesítmény) |
| {Binding} | Futtatókörnyezeti adatkötés |
| {StaticResource} | Hivatkozzon egy ResourceDictionary bejegyzésre a kulcsa alapján |
| {ThemeResource} | Például {StaticResource}, de az alkalmazás témájának változásakor frissül |
| {TemplateBinding} | Kötés egy vezérlősablon szülőjének tulajdonságához |
| {RelativeSource} | Kötés a sablonalapú szülőhöz képest |
| {CustomResource} | Speciális egyéni erőforrás-keresés |
| {x:Null} | Kifejezetten állítson be egy nullázható értéket erre: null |
A jelölőkiterjesztések beágyazhatók; először a legbelsőt értékeli ki.
Events
Eseménykezelők csatolása az XAML-ben az esemény attribútumként való megadásával és a kezelőmetódus nevének értékként való megadásával:
<Button Click="showUpdatesButton_Click">Show updates</Button>
A fordító egy megfelelő metódust vár a kód mögött, a megfelelő meghatalmazotti aláírással:
private void showUpdatesButton_Click(object sender, RoutedEventArgs e)
{
// your code
}
void showUpdatesButton_Click(Windows::Foundation::IInspectable const&, Microsoft::UI::Xaml::RoutedEventArgs const&);
Megjegyzés:
A C++/CX-ben minden XAML-lap két kód mögötti fájllal rendelkezik: egy fejlécet (.xaml.h) és egy implementációt (.xaml.cpp).
További információ: Események és irányított események áttekintése.
Erőforrás-szótárak
Az ResourceDictionary újrahasználható objektumokat – keféket, stílusokat, sablonokat – tárolja, amelyeket a x:Keyazonosít. Az erőforrások egy oldal erőforrások szakaszában vagy egy külön .xaml fájlban lehetnek. A teljes magyarázatért tekintse meg a ResourceDictionary és az XAML erőforráshivatkozásait.
XAML és XML
Az XAML az XML egy szuperhalmaza, amelyről néhány dolgot tudni kell:
- Kis- és nagybetűk megkülönböztetése: Az elemek és attribútumok nevének pontosan meg kell egyeznie.
-
xml:lang: Az XAML-ben érvényes, de keretrendszerszintű futtatókörnyezeti viselkedésre van leképezve, nem elemzési viselkedésre. - Kódolás: Csak az UTF-8 és az UTF-16 támogatott.
XAML-névszkópok
A hozzárendelt x:Name neveknek egyedinek kell lenniük a névhatókörükön belül. A névterek különösen fontosak a vezérlősablonokban, ahol a nevek hatóköre nem az oldalra, hanem a sablonra terjed ki. További részletekért lásd az XAML-névszkópokat.
Teljesítménnyel kapcsolatos tippek
- A gyakran használt ecseteket definiálja
SolidColorBrusherőforrásként a színliterálok ismétlése helyett. - Az oldalak között megosztott erőforrásokat helyezze a
Application.Resourceselembe; az oldalspecifikus erőforrásokat tartsa helyben az adott oldalon. - Szállítás előtt távolítsa el a nem használt erőforrásokat (hivatkozás nélküli
{StaticResource}kulcsokat). - Kerülje a vezérlősablonok felülbírálását – az alapértelmezett értékek már optimalizálva vannak a terhelési teljesítményre.
- Használjon
Borderés elrendezéstárolókat ugyanannak a képpontnak a többszöri megrajzolása (túlrajzolás) helyett. - Használja a(z)
ListViewésGridViewalapértelmezett elemsablonjait; a hozzájuk tartozóPresenterlogika nagyméretű listákhoz van optimalizálva.
További útmutatásért lásd: A XAML-jelölés optimalizálása.
XAML hibakeresése
A .xaml fájlokban nem lehet töréspontokat beállítani, de a Visual Studio más módon segít:
- Tervezési idő: Beíráskor a hullámos és hibajelölők beágyazottan jelennek meg.
-
Futtatókörnyezet: Az értelmezési hibák egy
XamlParseExceptionkivételt váltanak ki (vagy C++/CX esetén egy hasonló strukturált kivételt), a XAML-fájl sorszámára vonatkozó információval.
A futtatókörnyezeti hibák kezelésével kapcsolatban lásd a WinUI-alkalmazások kivételkezelését a C#-ban. Hibakeresési munkamenet indításához lásd: Hibakeresési munkamenet indítása.
Windows developer