Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемintuit.ru
1 Лекция 4
2 Раздел 4.1
3 Windows Phone Темы раздела 3
4 Windows Phone Элементы Silverlight 4
5 Windows Phone Элементы Silverlight как объекты 5
6 Windows Phone Свойства элемента TextBlock 6 resultTextBlock.Text = result.ToString();
7 Windows Phone Использование метода TryParse 7 float v1 = 0; if (!int.TryParse(firstNumberTextBox.Text, out v1)) { // Код для обработки введённого недопустимого значения }
8 Windows Phone Изменение цвета текста 8 float v1 = 0; if (!float.TryParse(firstNumberTextBox.Text, out v1)) { firstNumberTextBox.Foreground = new SolidColorBrush(Colors.Red); return; }
9 Windows Phone Изменение цвета текста 9 float v1 = 0; if (!float.TryParse(firstNumberTextBox.Text, out v1)) { firstNumberTextBox.Foreground = new SolidColorBrush(Colors.Red); return; }
10 Windows Phone Настройка кисти 10 private SolidColorBrush errorBrush = new SolidColorBrush(Colors.Red); private Brush correctBrush = null;
11 Windows Phone Сохранение кисти по умолчанию 11 private void calculateResult() { bool errorFound = false; if (correctBrush == null) correctBrush = firstNumberTextBox.Foreground; // остальной код метода }
12 Windows Phone Использование кистей 12 private void calculateResult() { // настройка кистей if (!float.TryParse(firstNumberTextBox.Text, out v1)) { firstNumberTextBox.Foreground = errorBrush; errorFound = true; } else { firstNumberTextBox.Foreground = correctBrush; } }
13 Windows Phone Изменение XAML-кода элемента 13
14 Windows Phone XAML-код элемента TextBlock 14
15 Windows Phone Свойство InputScope 15
16 Windows Phone Описание свойства InputScope 16
17 Windows Phone Атрибуты и элементы 17 72
18 Windows Phone Настройка свойств в коде на C# 18 // Создание нового элемента InputScope InputScope digitScope = new InputScope(); // Создание нового элемента InputScopeName InputScopeName digits = new InputScopeName(); // Установка свойства name в значение Digits digits.NameValue = InputScopeNameValue.Digits; // Добавление элемента InputScopeName в элемент InputScope digitScope.Names.Add(digits); // Присвоить элементу TextBox созданное свойство firstNumberTextBox.InputScope = digitScope;
19 Windows Phone Вывод окна с сообщением 19
20 Windows Phone Пример простого сообщения 20 MessageBox.Show("Недопустимый ввод" + System.Environment.NewLine + "Пожалуйста, повторите ввод");
21 Windows Phone Сообщение с выбором 21 if (MessageBox.Show( "Вы действительно хотите это сделать?", "Выполнение действия", MessageBoxButton.OKCancel) == MessageBoxResult.OK) { // Действия, если пользователь // нажмёт "ok" } else { // Действия, если пользователь нажмёт "отмена" }
22 Windows Phone Использование ресурсов 22
23 Windows Phone Добавление ресурса 23
24 Windows Phone Ссылка на ресурс 24
25 Windows Phone Действие при построении 25
26 Windows Phone Использование файла ресурса 26
27 Windows Phone Использование внедрённого в сборку изображения 27
28 Windows Phone Выбор способа размещения ресурсов 28
29 Windows Phone Краткие итоги 29
30 Раздел 4.2
31 Windows Phone Темы раздела 31
32 Windows Phone События элементов Silverlight 32 private void equalsButton_Click( object sender, RoutedEventArgs e) { calculateResult(); }
33 Windows Phone Событие TextChanged 33
34 Windows Phone Автоматическое вычисление результата 34 private void firstNumberTextBox_TextChanged( object sender,TextChangedEventArgs e) { if (firstNumberTextBox.Text == oldFirstNumber) return; oldFirstNumber = firstNumberTextBox.Text; calculateResult(); }
35 Windows Phone Привязка данных 35
36 Windows Phone Однонаправленная привязка 36
37 Windows Phone Двунаправленная привязка 37
38 Windows Phone Создание класса для привязки 38
39 Windows Phone Создания объекта для привязки 39 public class AdderClass { private int topValue; public int TopValue { get { return topValue; } set { topValue = value; } } // то же самое для свойства BottomValue public int AnswerValue { get { return topValue + bottomValue;} } }
40 Windows Phone Добавление уведомления 40 public interface INotifyPropertyChanged { // Событие происходит при изменении значений свойства event PropertyChangedEventHandler PropertyChanged; }
41 Windows Phone Визуальные элементы Silverlight 41 PropertyChanged(this, new PropertyChangedEventArgs("AnswerValue"));
42 Windows Phone Определение значения свойства 42 public int AnswerValue { get { return topValue + bottomValue; } }
43 Windows Phone Связывание класса в XAML-коде 43 xmlns:local="clr-namespace:AddingMachine"
44 Windows Phone Связывание с классом-ресурсом 44
45 Windows Phone Добавление ресурса к элементу 45
46 Windows Phone Применение привязки данных 46
47 Windows Phone Привязка данных в XAML-коде 47
48 Windows Phone Установка свойства DataContext 48 // Конструктор public MainPage() { InitializeComponent(); AdderClass adder = new AdderClass(); ContentGrid.DataContext = adder; }
49 Windows Phone Краткие итоги 49
50 Раздел 4.3
51 Windows Phone Краткие итоги 51
52 Windows Phone Ориентация в Windows Phone 52
53 Windows Phone Выбор ориентации приложения 53 SupportedOrientations="Portrait" Orientation="Portrait"
54 Windows Phone Режим нескольких ориентаций 54 SupportedOrientations="PortraitOrLandscape Orientation="Portrait"
55 Windows Phone Расположение элементов 55
56 Windows Phone Событие OrientationChanged 56
57 Windows Phone Поддержка смены ориентации 57 private void PhoneApplicationPage_OrientationChanged( object sender, OrientationChangedEventArgs e) { if (e.Orientation == PageOrientation.PortraitUp) { setPortrait(); } else { setLandscape(); } }
58 Windows Phone Метод setLandscape 58 private void setLandscape() { firstNumberTextBox.Margin = new Thickness(8,19,0,0); firstNumberTextBox.Width = 207; secondNumberTextBox.Margin = new Thickness(252,19,0,0); secondNumberTextBox.Width = 207; plusTextBlock.Margin = new Thickness(221,35,0,0); resultTextBlock.Margin = new Thickness(538,35,0,0); }
59 Windows Phone Использование контейнеров 59
60 Windows Phone Элемент-контейнер StackPanel 60
61 Windows Phone Использование StackPanel 61
62 Windows Phone Краткие итоги 62
63 Раздел 4.4
64 Windows Phone Темы раздела 64
65 Windows Phone Списки данных в приложениях 65
66 Windows Phone Класс Customer 66 public class Customer { public string Name { get; set; } public string Address { get; set; } public int ID { get; set; } public Customer(string inName, string inAddress, int inID) { Name = inName; Address = inAddress; ID = inID; }
67 Windows Phone Класс Customers 67 public class Customers { public string Name { get; set; } public Customers(string inName) { Name = inName; CustomerList = new List (); } public List CustomerList; }
68 Windows Phone Подготовка тестовых данных 68 public static Customers MakeTestCustomers() { int id = 0; foreach (string lastName in lastsNames) { foreach (string firstname in firstNames) { // формирование имени клиента string name = firstname + " " + lastName; // добавление клиента в список result.CustomerList.Add(new Customer(name, name + "'s House", id)); id++; } return result; } customers = Customers.MakeTestCustomers();
69 Windows Phone Элемент StackPanel 69
70 Windows Phone Тестовые данные 70 foreach (Customer c in customers.CustomerList) { TextBlock customerBlock = new TextBlock(); customerBlock.Text = c.Name; customersStackPanel.Children.Add(customerBlock); }
71 Windows Phone Отображение списка на экране 71
72 Windows Phone Элемент ScrollViewer 72
73 Windows Phone Элемент ListBox 73
74 Windows Phone Создание шаблона данных 74
75 Windows Phone Использование шаблона данных 75
76 Windows Phone Указание источника данных 76 customers = Customers.MakeTestCustomers(); customerList.ItemSource = customers.CustomerList;
77 Windows Phone Вывод списка в элементе ListBox 77
78 Windows Phone Улучшенный шаблон данных 78
79 Windows Phone Вывод списка с новым шаблоном 79
80 Windows Phone Выбор элементов в ListBox 80
81 Windows Phone Событие SelectionChanged 81
82 Windows Phone Событие SelectionChanged 82 private void customerList_SelectionChanged(object sender, SelectionChangedEventArgs e) { // получение содержимого выбранного элемента Customer selectedCustomer = customerList.SelectedItem as Customer; MessageBox.Show("Выбран элемент " + selectedCustomer.Name); }
83 Windows Phone Краткие итоги 83
84 Раздел 4.5
85 Windows Phone Темы раздела 85
86 Windows Phone Добавление новой страницы 86
87 Windows Phone Навигация по страницам 87 private void page2Button_Click(object sender, RoutedEventArgs e) { NavigationService.Navigate( new Uri("/CustomerDetailPage.xaml", UriKind.RelativeOrAbsolute)); }
88 Windows Phone Типы URI 88 private void page2Button_Click(object sender, RoutedEventArgs e) { NavigationService.Navigate( new Uri("/CustomerDetailPage.xaml", UriKind.RelativeOrAbsolute)); }
89 Windows Phone Использование кнопки Назад 89
90 Windows Phone Изменение поведения кнопки 90
91 Windows Phone Отмена перехода 91 private void PhoneApplicationPage_BackKeyPress( object sender, System.ComponentModel.CancelEventArgs e) { e.Cancel = true; }
92 Windows Phone Использование MessageBox 92 private void PhoneApplicationPage_BackKeyPress( object sender, System.ComponentModel.CancelEventArgs e) { if (MessageBox.Show( "Вы действительно хотите перейти на другую страницу?", "Подтверждение перехода", MessageBoxButton.OKCancel) != MessageBoxResult.OK) { e.Cancel = true; } }
93 Windows Phone Передача данных между страницами 93
94 Windows Phone Добавление данных в URI 94 // получение информации о выбранном клиенте Customer selectedCustomer = customerList.SelectedItem as Customer; // формирование строки адреса с информацией о клиенте NavigationService.Navigate( new Uri("/CustomerDetailPage.xaml?" + "name=" + selectedCustomer.Name + "&" + "address=" + selectedCustomer.Address, UriKind.Relative));
95 Windows Phone Использование событий при навигации по страницам 95
96 Windows Phone Получение данных из URI 96 protected override void OnNavigatedTo (System.Windows.Navigation.NavigationEventArgs e) { string name, address; if (NavigationContext.QueryString.TryGetValue("name", out name)) nameTextBlock.Text = name; }
97 Windows Phone Совместное использование объектов несколькими страницами 97
98 Windows Phone Страница App.xaml 98
99 Windows Phone Класс App 99 public partial class App : Application { // объект используется другими страницами приложения public Customer ActiveCustomer; }
100 Windows Phone Получение ссылки на объект App 100 protected override void OnNavigatedTo( System.Windows.Navigation.NavigationEventArgs e) { base.OnNavigatedTo(e); // получение ссылки на страницу с информацией // о текущем клиенте App thisApp = Application.Current as App; // установка контекста данных для отображения // в элементе Grid customerDisplayGrid.DataContext = thisApp.ActiveCustomer; }
101 Windows Phone Установка контекста данных 101 protected override void OnNavigatedTo( System.Windows.Navigation.NavigationEventArgs e) { base.OnNavigatedTo(e); // получение ссылки на страницу с информацией // о текущем клиенте App thisApp = Application.Current as App; // установка контекста данных для отображения // в элементе Grid customerDisplayGrid.DataContext = thisApp.ActiveCustomer; }
102 Windows Phone Краткие итоги 102
103 Раздел 4.6
104 Windows Phone Темы раздела 104
105 Windows Phone Отображение изменений 105
106 Windows Phone Связывание с данными 106
107 Windows Phone Model-View-ViewModel 107
108 Windows Phone Класс CustomerView 108 public class CustomerView : INotifyPropertyChanged { private string name; public string Name { get { return name; } set { name = value; if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs("name")); } } }... }
109 Windows Phone Класс CustomerView 109
110 Windows Phone Методы Load и Save 110 public class CustomerView : INotifyPropertyChanged {... public void Load(Customer cust) { Name = cust.Name; Address = cust.Address; id = cust.ID; } public void Save(Customer cust) { cust.Name = Name; cust.Address = Address; } }
111 Windows Phone Начало редактирования 111 protected override void OnNavigatedTo( System.Windows.Navigation.NavigationEventArgs e) { // получить ссылку на страницу, содержащую информацию // об активном клиенте App thisApp = Application.Current as App; // загрузить объект с информацией об активном клиенте // в класс ViewModel view.Load(thisApp.ActiveCustomer); // установить контекст данных для отображения customerDisplayGrid.DataContext = view; }
112 Windows Phone Окончание редактирования 112 private void saveButton_Click(object sender, RoutedEventArgs e) { // получить ссылку на страницу, содержащую информацию // об активном клиенте App thisApp = Application.Current as App; // скопировать данные из класса ViewModel в свойство // ActiveCustomer view.Save(thisApp.ActiveCustomer); // вернуться на предыдущую страницу NavigationService.GoBack(); }
113 Windows Phone Метод GoBack 113 private void saveButton_Click(object sender, RoutedEventArgs e) {... // вернуться на предыдущую страницу NavigationService.GoBack(); }
114 Windows Phone Наблюдаемые коллекции 114
115 Windows Phone Класс ObservableCollection 115 ObservableCollection observableCustomers; observableCustomers = new ObservableCollection (thisApp.ActiveCustomerList.CustomerList); // отображение элементов наблюдаемой коллекции customerList.ItemsSource = observableCustomers;
116 Windows Phone Подтверждение изменений 116 // найти нужного клиента в списке int pos = observableCustomers.IndexOf( thisApp.ActiveCustomer); // удалить клиента observableCustomers.RemoveAt(pos); // вернуть клиента назад observableCustomers.Insert(pos, thisApp.ActiveCustomer);
117 Windows Phone Сохранение данных 117 thisApp.ActiveCustomerList.CustomerList = observableCustomers.ToList ();
118 Windows Phone Краткие итоги 118
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.