Sdílet prostřednictvím


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:

Trojitý snímek obrazovky s klepnutím na opici

Ale program MonkeyTap opravdu potřebuje zvuk. (Viz další kapitola.)