using Xamarin Forms namespace Hello App class Main














- Slides: 14
Создание кнопки Для кнопки можно задать using Xamarin. Forms; namespace Hello. App { class Main. Page : Content. Page { public Main. Page() { Stack. Layout stack. Layout = new Stack. Layout(); Button button = new Button { Text = "Нажми!", Font. Size = Device. Get. Named. Size(Named. Size. Large, typeof(Button)), Border. Width = 1, Horizontal. Options = Layout. Options. Center, Vertical. Options = Layout. Options. Center. And. Expand }; button. Clicked += On. Button. Clicked; stack. Layout. Children. Add(button); this. Content = stack. Layout; } private void On. Button. Clicked(object sender, System. Event. Args e) { Button button = (Button)sender; button. Text = "Нажато!"; button. Background. Color = Color. Red; } } } обработчик нажатия для события Clicked. По нажатию просто изменяем текст и цвет фона кнопки. Обработчик во многим аналогичен стандартным обработчикам в Windows Forms. Он принимает два параметра: объект типа object (источника события) и System. Event. Args (аргумент события, хранящий некоторую дополнительную информацию). 2
Создание кнопки (XAML) <? xml version="1. 0" encoding="utf-8" ? > <Content. Page xmlns="http: //xamarin. com/schemas/2014/forms" xmlns: x="http: //schemas. microsoft. com/winfx/2009/xaml" x: Class="Hello. App. Main. Page"> <Stack. Layout> <Button Text = "Нажми!" Font. Size="Large" Border. Width="1" Horizontal. Options="Center" Vertical. Options="Center. And. Expand" Clicked="On. Button. Clicked" /> </Stack. Layout> </Content. Page> using Xamarin. Forms; namespace Hello. App { public partial class Main. Page : Content. Page { public Main. Page() { Initialize. Component(); } private void On. Button. Clicked(object sender, System. Event. Args e) { Button button = (Button)sender; button. Text = "Нажато!"; button. Background. Color = Color. Red; } } } В файле отделенного кода Main. Page. xaml. cs еще надо прописать обработчик On. Button. Clicked 3
public class Main. Page : Content. Page { public Main. Page() { Label label = new Label { Vertical. Text. Alignment = Text. Alignment. Center, Horizontal. Text. Alignment = Text. Alignment. Center, Text = "Welcome to Xamarin Forms!", Font. Size = Device. Get. Named. Size(Named. Size. Large, typeof(Label)) }; Tap. Gesture. Recognizer tap. Gesture = new Tap. Gesture. Recognizer { Number. Of. Taps. Required = 2 }; int count = 0; // счетчик нажатий tap. Gesture. Tapped += (s, e) => { count++; if (count % 2 == 0) { label. Background. Color = Color. Black; label. Text. Color = Color. White; } else { label. Text. Color = Color. Black; label. Background. Color = Color. White; } label. Text = string. Format("Вы нажали {0} раз", count); }; label. Gesture. Recognizers. Add(tap. Gesture); Content = label; } Label (работа с событиями Tap. Gesture. Recognizer) 7
Текстовые поля (Entry) class Main. Page : Content. Page { Label text. Label; Entry login. Entry, password. Entry; public Main. Page() { Stack. Layout stack. Layout = new Stack. Layout(); login. Entry = new Entry { Placeholder = "Login" }; login. Entry. Text. Changed+=login. Entry_Text. Changed; password. Entry = new Entry { Placeholder = "Password", Is. Password = true }; text. Label = new Label { Font. Size = Device. Get. Named. Size(Named. Size. Large, typeof(Label)) }; stack. Layout. Children. Add(login. Entry); stack. Layout. Children. Add(password. Entry); stack. Layout. Children. Add(text. Label); this. Content = stack. Layout; } private void login. Entry_Text. Changed(object sender, Text. Changed. Event. Args e) { text. Label. Text = login. Entry. Text; } 8 }
Текстовые поля (Entry) XAML <Stack. Layout> <Entry x: Name="login. Entry" Text. Changed="login. Entry_Text. Changed" /> <Entry x: Name="password. Entry" Placeholder = "Password" Is. Password ="True" /> <Label x: Name="text. Label" Font. Size="Large" /> </Stack. Layout> 9
Editor В отличие от Entry Editor представляет собой многострочное поле ввода, но принципы его работы аналогичны. public Main. Page() { Stack. Layout stack. Layout = new Stack. Layout(); Editor text. Editor = new Editor { Height. Request=200, Background. Color=Color. Teal}; Label text. Label = new Label { Text="Многострочный текст", Font. Size= Device. Get. Named. Size(Named. Size. Large, typeof(Label)) }; stack. Layout. Children. Add(text. Label); stack. Layout. Children. Add(text. Editor); this. Content = stack. Layout; } <Stack. Layout> <Label Font="26" Text="Многострочный ввод" /> <Editor Background. Color="#a 5 d 6 a 7" Height. Request="200" /> </Stack. Layout> 12
Контейнер Frame создает вокруг вложенного содержимого прямоугольную границу, за цвет которой отвечает свойство Border. Color. Также отличительной особенностью фрейм является то, что по умолчанию он уже имеет внутренние отступы в 20 единиц: class Main. Page : Content. Page { public Main. Page() { Frame frame = new Frame { Border. Color = Color. Accent }; frame. Content = new Label { Text = "Xamarin Forms", Font. Size= Device. Get. Named. Size(Named. Size. Large, typeof(Label)), Vertical. Options = Layout. Options. Center, Horizontal. Options = Layout. Options. Center }; Padding = new Thickness(15); Content = frame; } } 13
Элемент Box. View представляет прямоугольник. Чаще всего Box. View используется для создания окрашенных областей, либо в качестве контейнера для изображений: class Main. Page : Content. Page { public Main. Page() { Box. View box. View = new Box. View { Color = Color. Accent, Width. Request = 150, Height. Request = 150, Horizontal. Options = Layout. Options. Center, Vertical. Options = Layout. Options. Center. And. Expand }; Content = box. View; } } 14












