Читайте также:
|
|
Если взглянуть на устройство кнопки, то на самом деле мы увидим, что она составлена из нескольких элементов. Из-за наличия подобной композиции возникает интересная проблема при обработке событий. Памятуя о простоте модели программирования, мы хотим, чтобы код подписки на событие нажатия кнопки был прост и хорошо знаком разработчикам. Мы не должны требовать ничего сверх обычного присоединения обработчика к событию Click:
Button b = new Button();
b.Content = «Click Me»;
b.Click += delegate { MessageBox.Show(«You clicked me!»); };
На первый взгляд, выглядит замечательно, но посмотрим, что тут реально происходит. Ведь щелкаем мы не по кнопке, а по какому-то из элементов, из которых кнопка составлена. Чтобы все работало гладко, в WPF введено понятие маршрутизации события, которое позволяет обойти составляющие элементы. Продемонстрировать его мы сможем, добавив в предыдущем примере вторую кнопку, которая будет выступать в качестве содержимого. Щелчок как по первой, так и по второй кнопке приводит к возбуждению события:
Button b = new Button();
b.Content = new Button();
b.Click += delegate { MessageBox.Show(«You clicked me!»); };
Получающееся дерево отображение показано на рис. 8.1, из которого также видно, что нам следует озаботиться не только двумя кнопками. Даже в простом случае единственной кнопки композиция событий необходима для того, чтобы маршрутизировать событие мыши до кнопки.
Рисунок. 8.1. Дерево отображения (слева) кнопки, в которую вложена другая кнопка (справа)
Композиция элементов отражается на всех аспектах обработки действий, а не только на событиях.
Дата добавления: 2015-08-13; просмотров: 78 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Шаг 1. Инкапсуляция UI в User Control | | | Слабая связь |