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

Слабая связь

Читайте также:
  1. VI. ТЕЛЕПАТИЧЕСКАЯ СВЯЗЬ.
  2. А - камеры сердца и магистральные сосуды. Б - взаимосвязь камер сердца с большим и малым кругами кровообращения. Стрелки указывают направления кровотока
  3. Беск.бол.посл. Связь с беск.мал. Св-ва б.б. посл.
  4. Бесконечно большие функции и их связь с
  5. Взаимосвязь вкуса с другими органами чувств
  6. Взаимосвязь воли с другими сторонами психики
  7. ВЗАИМОСВЯЗЬ ИНФЛЯЦИИ И БЕЗРАБОТИЦЫ. КРИВАЯ ФИЛЛИПСА

Из описания событий в интерфейсе класса Button следует, что он поддерживает не только непосредственные события мыши (MouseUp, MouseDown и т.д.), но и событие Click, которое является абстракцией гораздо более высокого уровня, чем просто событие мыши. Оно возникает и тогда, когда пользователь нажимает пробельную клавишу (при условии, что кнопка владеет фокусом) или клавишу Enter (если это кнопка по умолчанию для окна). Нажатие кнопки – это семантическое событие, тогда как события мыши относятся к физическим.

У написания кода для обработки именно события Click есть два преимущества:

· мы не привязываемся к конкретному жесту пользователя (операции с мышью или клавиатурой);

· мы не ограничиваем себя только кнопкой.

Каждый из элементов CheckBox, RadioButton, Button и Hyperlink поддерживает нажатие. Если обработчик связан с событием Click, то он применим к любому компоненту, который может быть «нажат». Такое отделение кода от действия обеспечивает большую гибкость в реализации обработчиков. Однако самим событиям присуща некая форма зависимости; требуется, чтобы метод-обработчик имел вполне определенную сигнатуру. Например, делегат для обработки события Button.Click определен следующим образом:

public delegate void RoutedEventHandler(object sender,RoutedEventArgs e);

Одна из целей WPF – поддержать широкий спектр действий: от тесно связанных физических событий (например, MouseUp) до чисто семантических извещений (например, команды ApplicationCommands.Close, которая сигнализирует о том, что окно должно быть закрыто).

Допуская слабую связь, мы получаем возможность писать шаблоны, которые радикально меняют элемент управления. Например, включив кнопку, ассоциированную с командой Close, мы сможем написать шаблон для окна, который добавляет элемент для закрытия:

<ControlTemplate TargetType=’{x:Type Window}’>
<DockPanel>
<StatusBar DockPanel.Dock=’Bottom’>
<StatusBarItem>
<Button Command=’{x:Static ApplicationCommands.Close}’ >
Close
</Button>
</StatusBarItem>
</StatusBar>
<ContentPresenter />
</DockPanel>
</ControlTemplate>

Теперь можно заставить окно закрываться, когда любой компонент пошлет команду Close; для этого достаточно добавить в код класса окна соответствующую привязку:

public MyWindow()
{
InitializeComponent();
CommandBindings.Add(
new CommandBinding(ApplicationCommands.Close,CloseExecuted));
}
void CloseExecuted(object sender, ExecuteRoutedEventArgs e)
{
this.Close();
}

Команды – это наименее связанная модель действий в WPF. Слабая связь обеспечивает полное абстрагирование от источника действия (в данном случае кнопки) и от обработчика действия (в данном случае окна). Мы могли бы изменить стиль окна, воспользовавшись совершенно другим элементом управления, и при этом приложение продолжало бы функцианировать.


Дата добавления: 2015-08-13; просмотров: 75 | Нарушение авторских прав


Читайте в этой же книге: Лекция 7. Пользовательские элементы управления. | Устанавливаем стили для элементов управления | Определение свойств зависимости | Шаг 2. Рефакторинг кода разметки указателя цвета | Набор для практики | Задача 4. | Свойство, которое возвращает или задает тип, для которого предназначен данный стиль. | Шаг 2. Создание пользовательского элемента управления | Шаг 5. Использование Custom Control | Шаг 1. Инкапсуляция UI в User Control |
<== предыдущая страница | следующая страница ==>
Композиция элементов| События

mybiblioteka.su - 2015-2024 год. (0.01 сек.)