Страница 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 в составе навигационного каркаса


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: