Лекция 4Лекция 4Раздел 4.1Windows Phone Темы раздела 3.

Презентация:



Advertisements
Похожие презентации
Масштаб 1 : Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Advertisements

Масштаб 1 : Приложение 1 к решению Совета депутатов города Новосибирска от
Лекция 2 Раздел 2.1 Windows Phone Темы раздела 3.
Д. Дуброво д. Бортниково с. Никульское д. Подлужье д. Бакунино пос. Радужный - Песчаный карьер ООО ССП «Черкизово» - Граница сельского поселения - Граница.
Приложение 1 к решению Совета депутатов города Новосибирска от Масштаб 1 : 5000.
Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______ Масштаб 1 : 5000.
ЦИФРЫ ОДИН 11 ДВА 2 ТРИ 3 ЧЕТЫРЕ 4 ПЯТЬ 5 ШЕСТЬ 6.
Ул.Школьная Схема с. Вознесенка Ярославского городского поселения п.Ярославский 10 2 Ул.Флюоритовая
Фрагмент карты градостроительного зонирования территории города Новосибирска Масштаб 1 : 4500 к решению Совета депутатов города Новосибирска от
Таблица умножения на 8. Разработан: Бычкуновой О.В. г.Красноярск год.
27 апреля группадисциплина% ДЕ 1МП-12Английский язык57 2МП-34Экономика92 3МП-39Психология и педагогика55 4МП-39Электротехника и электроника82 5П-21Информатика.
Работа учащегося 7Б класса Толгского Андрея. Каждое натуральное число, больше единицы, делится, по крайней мере, на два числа: на 1 и на само себя. Если.
Матемтааки ЕТ СТ 2 класс Шипилова Наталия Викторовна учитель начальных классов, ВКК Шипилова Наталия Викторовна учитель начальных классов, ВКК.
Урок 2. Информационные процессы в обществе и природе.
Результаты работы 5а класса Кл. руководитель: Белобородова Н. С. Показатель 0123 Обучаемость 1-6%4-25%8-50%3-18 Навыки смыслового чтения 1-6%12-75%3-18%

Фрагмент карты градостроительного зонирования территории города Новосибирска Масштаб 1 : 6000 Приложение 7 к решению Совета депутатов города Новосибирска.
27 апреля группадисциплина% ДЕ 1МП-12Английский язык57 2МП-34Экономика92 3МП-39Психология и педагогика55 4МП-39Электротехника и электроника82 5П-21Информатика.
1. Определить последовательность проезда перекрестка

Транксрипт:

Лекция 4

Раздел 4.1

Windows Phone Темы раздела 3

Windows Phone Элементы Silverlight 4

Windows Phone Элементы Silverlight как объекты 5

Windows Phone Свойства элемента TextBlock 6 resultTextBlock.Text = result.ToString();

Windows Phone Использование метода TryParse 7 float v1 = 0; if (!int.TryParse(firstNumberTextBox.Text, out v1)) { // Код для обработки введённого недопустимого значения }

Windows Phone Изменение цвета текста 8 float v1 = 0; if (!float.TryParse(firstNumberTextBox.Text, out v1)) { firstNumberTextBox.Foreground = new SolidColorBrush(Colors.Red); return; }

Windows Phone Изменение цвета текста 9 float v1 = 0; if (!float.TryParse(firstNumberTextBox.Text, out v1)) { firstNumberTextBox.Foreground = new SolidColorBrush(Colors.Red); return; }

Windows Phone Настройка кисти 10 private SolidColorBrush errorBrush = new SolidColorBrush(Colors.Red); private Brush correctBrush = null;

Windows Phone Сохранение кисти по умолчанию 11 private void calculateResult() { bool errorFound = false; if (correctBrush == null) correctBrush = firstNumberTextBox.Foreground; // остальной код метода }

Windows Phone Использование кистей 12 private void calculateResult() { // настройка кистей if (!float.TryParse(firstNumberTextBox.Text, out v1)) { firstNumberTextBox.Foreground = errorBrush; errorFound = true; } else { firstNumberTextBox.Foreground = correctBrush; } }

Windows Phone Изменение XAML-кода элемента 13

Windows Phone XAML-код элемента TextBlock 14

Windows Phone Свойство InputScope 15

Windows Phone Описание свойства InputScope 16

Windows Phone Атрибуты и элементы 17 72

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;

Windows Phone Вывод окна с сообщением 19

Windows Phone Пример простого сообщения 20 MessageBox.Show("Недопустимый ввод" + System.Environment.NewLine + "Пожалуйста, повторите ввод");

Windows Phone Сообщение с выбором 21 if (MessageBox.Show( "Вы действительно хотите это сделать?", "Выполнение действия", MessageBoxButton.OKCancel) == MessageBoxResult.OK) { // Действия, если пользователь // нажмёт "ok" } else { // Действия, если пользователь нажмёт "отмена" }

Windows Phone Использование ресурсов 22

Windows Phone Добавление ресурса 23

Windows Phone Ссылка на ресурс 24

Windows Phone Действие при построении 25

Windows Phone Использование файла ресурса 26

Windows Phone Использование внедрённого в сборку изображения 27

Windows Phone Выбор способа размещения ресурсов 28

Windows Phone Краткие итоги 29

Раздел 4.2

Windows Phone Темы раздела 31

Windows Phone События элементов Silverlight 32 private void equalsButton_Click( object sender, RoutedEventArgs e) { calculateResult(); }

Windows Phone Событие TextChanged 33

Windows Phone Автоматическое вычисление результата 34 private void firstNumberTextBox_TextChanged( object sender,TextChangedEventArgs e) { if (firstNumberTextBox.Text == oldFirstNumber) return; oldFirstNumber = firstNumberTextBox.Text; calculateResult(); }

Windows Phone Привязка данных 35

Windows Phone Однонаправленная привязка 36

Windows Phone Двунаправленная привязка 37

Windows Phone Создание класса для привязки 38

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;} } }

Windows Phone Добавление уведомления 40 public interface INotifyPropertyChanged { // Событие происходит при изменении значений свойства event PropertyChangedEventHandler PropertyChanged; }

Windows Phone Визуальные элементы Silverlight 41 PropertyChanged(this, new PropertyChangedEventArgs("AnswerValue"));

Windows Phone Определение значения свойства 42 public int AnswerValue { get { return topValue + bottomValue; } }

Windows Phone Связывание класса в XAML-коде 43 xmlns:local="clr-namespace:AddingMachine"

Windows Phone Связывание с классом-ресурсом 44

Windows Phone Добавление ресурса к элементу 45

Windows Phone Применение привязки данных 46

Windows Phone Привязка данных в XAML-коде 47

Windows Phone Установка свойства DataContext 48 // Конструктор public MainPage() { InitializeComponent(); AdderClass adder = new AdderClass(); ContentGrid.DataContext = adder; }

Windows Phone Краткие итоги 49

Раздел 4.3

Windows Phone Краткие итоги 51

Windows Phone Ориентация в Windows Phone 52

Windows Phone Выбор ориентации приложения 53 SupportedOrientations="Portrait" Orientation="Portrait"

Windows Phone Режим нескольких ориентаций 54 SupportedOrientations="PortraitOrLandscape Orientation="Portrait"

Windows Phone Расположение элементов 55

Windows Phone Событие OrientationChanged 56

Windows Phone Поддержка смены ориентации 57 private void PhoneApplicationPage_OrientationChanged( object sender, OrientationChangedEventArgs e) { if (e.Orientation == PageOrientation.PortraitUp) { setPortrait(); } else { setLandscape(); } }

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); }

Windows Phone Использование контейнеров 59

Windows Phone Элемент-контейнер StackPanel 60

Windows Phone Использование StackPanel 61

Windows Phone Краткие итоги 62

Раздел 4.4

Windows Phone Темы раздела 64

Windows Phone Списки данных в приложениях 65

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; }

Windows Phone Класс Customers 67 public class Customers { public string Name { get; set; } public Customers(string inName) { Name = inName; CustomerList = new List (); } public List CustomerList; }

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();

Windows Phone Элемент StackPanel 69

Windows Phone Тестовые данные 70 foreach (Customer c in customers.CustomerList) { TextBlock customerBlock = new TextBlock(); customerBlock.Text = c.Name; customersStackPanel.Children.Add(customerBlock); }

Windows Phone Отображение списка на экране 71

Windows Phone Элемент ScrollViewer 72

Windows Phone Элемент ListBox 73

Windows Phone Создание шаблона данных 74

Windows Phone Использование шаблона данных 75

Windows Phone Указание источника данных 76 customers = Customers.MakeTestCustomers(); customerList.ItemSource = customers.CustomerList;

Windows Phone Вывод списка в элементе ListBox 77

Windows Phone Улучшенный шаблон данных 78

Windows Phone Вывод списка с новым шаблоном 79

Windows Phone Выбор элементов в ListBox 80

Windows Phone Событие SelectionChanged 81

Windows Phone Событие SelectionChanged 82 private void customerList_SelectionChanged(object sender, SelectionChangedEventArgs e) { // получение содержимого выбранного элемента Customer selectedCustomer = customerList.SelectedItem as Customer; MessageBox.Show("Выбран элемент " + selectedCustomer.Name); }

Windows Phone Краткие итоги 83

Раздел 4.5

Windows Phone Темы раздела 85

Windows Phone Добавление новой страницы 86

Windows Phone Навигация по страницам 87 private void page2Button_Click(object sender, RoutedEventArgs e) { NavigationService.Navigate( new Uri("/CustomerDetailPage.xaml", UriKind.RelativeOrAbsolute)); }

Windows Phone Типы URI 88 private void page2Button_Click(object sender, RoutedEventArgs e) { NavigationService.Navigate( new Uri("/CustomerDetailPage.xaml", UriKind.RelativeOrAbsolute)); }

Windows Phone Использование кнопки Назад 89

Windows Phone Изменение поведения кнопки 90

Windows Phone Отмена перехода 91 private void PhoneApplicationPage_BackKeyPress( object sender, System.ComponentModel.CancelEventArgs e) { e.Cancel = true; }

Windows Phone Использование MessageBox 92 private void PhoneApplicationPage_BackKeyPress( object sender, System.ComponentModel.CancelEventArgs e) { if (MessageBox.Show( "Вы действительно хотите перейти на другую страницу?", "Подтверждение перехода", MessageBoxButton.OKCancel) != MessageBoxResult.OK) { e.Cancel = true; } }

Windows Phone Передача данных между страницами 93

Windows Phone Добавление данных в URI 94 // получение информации о выбранном клиенте Customer selectedCustomer = customerList.SelectedItem as Customer; // формирование строки адреса с информацией о клиенте NavigationService.Navigate( new Uri("/CustomerDetailPage.xaml?" + "name=" + selectedCustomer.Name + "&" + "address=" + selectedCustomer.Address, UriKind.Relative));

Windows Phone Использование событий при навигации по страницам 95

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; }

Windows Phone Совместное использование объектов несколькими страницами 97

Windows Phone Страница App.xaml 98

Windows Phone Класс App 99 public partial class App : Application { // объект используется другими страницами приложения public Customer ActiveCustomer; }

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; }

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; }

Windows Phone Краткие итоги 102

Раздел 4.6

Windows Phone Темы раздела 104

Windows Phone Отображение изменений 105

Windows Phone Связывание с данными 106

Windows Phone Model-View-ViewModel 107

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")); } } }... }

Windows Phone Класс CustomerView 109

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; } }

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; }

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(); }

Windows Phone Метод GoBack 113 private void saveButton_Click(object sender, RoutedEventArgs e) {... // вернуться на предыдущую страницу NavigationService.GoBack(); }

Windows Phone Наблюдаемые коллекции 114

Windows Phone Класс ObservableCollection 115 ObservableCollection observableCustomers; observableCustomers = new ObservableCollection (thisApp.ActiveCustomerList.CustomerList); // отображение элементов наблюдаемой коллекции customerList.ItemsSource = observableCustomers;

Windows Phone Подтверждение изменений 116 // найти нужного клиента в списке int pos = observableCustomers.IndexOf( thisApp.ActiveCustomer); // удалить клиента observableCustomers.RemoveAt(pos); // вернуть клиента назад observableCustomers.Insert(pos, thisApp.ActiveCustomer);

Windows Phone Сохранение данных 117 thisApp.ActiveCustomerList.CustomerList = observableCustomers.ToList ();

Windows Phone Краткие итоги 118