Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Страница 2. Использование цветов класса Brushes




  • Создайте новую страницу Page2, на которую пользователь перейдет по щелчку на кнопке
namespace WpfApp1{ // Класс-расширение страницы Page2 class Page2: Page { int index = 0; // Номер цвета PropertyInfo[] props; // Массив свойств public Page2() { // Применяем рефлексию для чтения свойств класса Brushes props = typeof(Brushes).GetProperties(BindingFlags.Public | BindingFlags.Static); // Компоновочная панель StackPanel stackPanel = new StackPanel(); // Создаем this.Content = stackPanel; // Присоединяем к странице Button btn = new Button(); btn.Name = " ButtonNextColor"; btn.Content = " NextColor > "; btn.Click += new RoutedEventHandler(btn_Click); stackPanel.Children.Add(btn); // Добавляем в панель btn = new Button(); btn.Content = " < PreviousColor"; btn.Click += new RoutedEventHandler(btn_Click); stackPanel.Children.Add(btn); btn = new Button(); btn.Content = " Next Page3"; btn.Click += new RoutedEventHandler(btnPage2_Click); stackPanel.Children.Add(btn); // Возбуждается при каждом отображении страницы this.Loaded += new RoutedEventHandler(Page2_Loaded); } void Page2_Loaded(object sender, RoutedEventArgs e) { // Вариант //this.NavigationService.LoadCompleted += NavigationService_LoadCompleted; SetTitleAndBackground(); } void NavigationService_LoadCompleted(object sender, NavigationEventArgs e) { // Вариант //SetTitleAndBackground(); } // Обработчики кнопок смены заголовка и цвета страницы void btn_Click(object sender, RoutedEventArgs e) { // Распознаем кнопку по имени и корректируем индекс if (((Button)sender).Name == " ButtonNextColor") index += 1; else index += props.Length - 1; index %= props.Length; // Деление по модулю SetTitleAndBackground(); } // Установка заголовка и цвета фона страницы void SetTitleAndBackground() { this.WindowTitle = " Page2: Имя цвета кисти - " + props[index].Name; this.Background = (Brush)props[index].GetValue(null, null); } // Переход на следующую страницу void btnPage2_Click(object sender, RoutedEventArgs e) { } }}

Мы разработали новый класс, определяющий функциональность страницы Page2. Осталось добавить в обработчик щелчка кнопки первой страницы код для перехода на эту новую страницу.

  • Добавьте в обработчик btnPage1_Click() класса Page1 следующий код
// Переход на следующую страницу Page2 page2; void btnPage1_Click(object sender, RoutedEventArgs e) { if (! this.NavigationService.CanGoForward) page2 = new Page2(); // Создаем только один раз this.NavigationService.Navigate(page2); }

Мы создаем объект страницы Page2 только при первом ее отображении и сохраняем в поле, поэтому в процессе навигации при всех последующих ее отображениях переустанавливать фон и заголовок необязательно, а обработчик события Loaded можно не регистрировать. Такой прием мы применим и для следующих страниц.

  • Запустите приложение и испытайте работу класса Page2 в составе навигационного каркаса


Данная страница нарушает авторские права?


mylektsii.su - Мои Лекции - 2015-2024 год. (0.006 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал