Shrnutí kapitoly 8. Kód a XAML v souladu
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:Object
x:Boolean
x:Byte
x:Int16
x:Int32
x:Int64
x:Single
x:Double
x:Decimal
x:Char
x:String
x:TimeSpan
x:Array
x: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.)