Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Tato kniha byla publikována na jaře roku 2016 a od té doby nebyla aktualizována. Existuje mnoho v knize, která zůstává cenná, ale některé materiály jsou zastaralé a některá témata už nejsou zcela správná nebo úplná.
Tato kapitola podrobněji zkoumá XAML a zejména způsob interakce kódu a XAML.
Předávání argumentů
Obecně platí, že instance třídy v XAML musí mít veřejný konstruktor bez parametrů; výsledný objekt je inicializován prostřednictvím nastavení vlastnosti. Existují však dva další způsoby, jak lze vytvořit instanci a inicializovat objekty.
I když se jedná o techniky pro obecné účely, většinou se používají v souvislosti s modely zobrazení MVVM.
Konstruktory s argumenty
Ukázka ParameteredConstructorDemo ukazuje použití značky x:Arguments k určení argumentů konstruktoru. Tyto argumenty musí být odděleny značkami prvků označujícími typ argumentu. Pro základní datové typy .NET jsou k dispozici následující značky:
x:Objectx:Booleanx:Bytex:Int16x:Int32x:Int64x:Singlex:Doublex:Decimalx:Charx:Stringx:TimeSpanx:Arrayx:DateTime
Můžu volat metody z XAML?
Ukázka FactoryMethodDemo ukazuje použití x:FactoryMethod elementu k určení metody továrny, která je vyvolána k vytvoření objektu. Taková metoda továrny musí být veřejná a statická a musí vytvořit objekt typu, ve kterém je definován. (Například Color.FromRgb metoda je kvalifikována, protože je veřejná a statická a vrací hodnotu typu Color.) Argumenty metody továrny jsou zadány v rámci x:Arguments značek.
Atribut x:Name
Atribut x:Name umožňuje vytvořit instanci objektu v jazyce XAML, aby získal název. Pravidla pro tyto názvy jsou stejná jako pro názvy proměnných jazyka C#. Po návratu InitializeComponent volání v konstruktoru může soubor kódu odkazovat na tyto názvy pro přístup k odpovídajícímu elementu XAML. Názvy jsou ve skutečnosti převedeny analyzátorem XAML na soukromá pole ve vygenerované částečné třídě.
Ukázka XamlClock demonstruje použití x:Name souboru kódu za účelem zachování dvou Label prvků definovaných v XAML s aktuálním datem a časem.
Stejný název nelze použít pro více prvků na stejné stránce. Jedná se o konkrétní problém, pokud používáte OnPlatform k vytvoření paralelních pojmenovaných objektů pro každou platformu. Ukázka PlatformSpecificLabele ukazuje lepší způsob, jak něco takového udělat.
Vlastní zobrazení založená na XAML
Existuje několik způsobů, jak se vyhnout opakování revizí v XAML. Jednou zběžnýchch ContentView Tato technika je ukázaná v ukázce ColorViewList . Třída ColorView je odvozena od ContentView zobrazení konkrétní barvy a jeho názvu, zatímco ColorViewListPage třída je odvozena od ContentPage obvyklých a explicitně vytváří 17 instancí ColorView.
Přístup ke ColorView třídě v JAZYCE XAML vyžaduje další deklaraci oboru názvů XML, která se běžně nazývá local pro třídy ve stejném sestavení.
Události a obslužné rutiny
Události je možné přiřadit obslužným rutině událostí v xaml, ale obslužná rutina události musí být implementována v souboru kódu za kódem. XamlKeypad ukazuje, jak sestavit uživatelské rozhraní klávesnice v XAML a jak implementovat Clicked obslužné rutiny v souboru kódu za kódem.
Gesta klepnutí
Jakýkoli View objekt může získat dotykový vstup a generovat události z daného vstupu. Třída View definuje GestureRecognizers vlastnost kolekce, která může obsahovat jednu nebo více instancí tříd odvozených z GestureRecognizer.
Tapped Generuje TapGestureRecognizer události. Program MonkeyTap ukazuje, jak připojit TapGestureRecognizer objekty ke čtyř BoxView prvkům vytvořit imitace hry:
Ale program MonkeyTap opravdu potřebuje zvuk. (Viz další kapitola.)
