Основы проектирования интерфейсов с использованием технологии Windows Presentation Foundation. Шамшев Ан. Б. - 120 стр.

UptoLike

Составители: 

120
<ImageSource="happyface.jpg"Stretch="None"/><TextBlock
Margin="3">CourtesyoftheStackPaneI
</TextBlock>
</StackPanel>
</Label>
Как было сказано выше, каждый ингредиент, помещаемый в ок-
но WPF, является наследником класса UIElement, включая Label,
StackPanel,TextBlockиImage. Класс UIElement определяет несколько
ключевых событий. Например, каждый класс, являющийся потомком
UIElement, предлагает события MouseUp и MouseDown.
А теперь посмотрим, что произойдет, если щелкнуть на изобра-
жении в данной метке. Понятно, что при этом возникнут события
Image.MouseDown и Image.MouseUp. Но что делать, если нужно об-
рабатывать все щелчки на метке одинаковым образом? В этом случае
не будет разницы в том, где щелкнул пользовательна изображении,
на тексте или на пустом месте в области метки. В любом из этих слу-
чаев необходимо реагировать спомощью одного и того же кода. Оче-
видно, что можно привязать один и тот же обработчик к событиям
MouseDown и MouseUp каждого элемента, однако это может запутать
код и усложнить сопровождение разметки. WPF предлагает более
удобное решение за счет модели маршрутизируемых событий.
Маршрутизируемые события бывают трех видов:
Прямые события (directevent) подобны обычным событиям
.NET. Они возникают в одном элементе, и не передаются в
другой. Например, MouseEnter является простым событием;
Поднимающиесяпузырьковые») события (bubbling event)
перемещаются вверх по иерархии. Например, MouseDown яв-
ляется поднимающимся событием. Оно возникает в элементе,
на котором был произведен щелчок. Затем оно передается от
этого элемента к родителю, затем к родителю этого родителя,
и так далее. Этот процесс продолжается до тех пор, пока WPF
не достигнет вершины дерева элементов;