'

Классы Windows Presentation Foundation - 1

Понравилась презентация – покажи это...





Слайд 0

Классы Windows Presentation Foundation - 1 System.Object   System.Windows.Threading.DispatcherObject     System.Windows.DependencyObject       System.Windows.Media.Visual         System.Windows.UIElement           System.Windows.FrameworkElement             System.Windows.Controls.Control               System.Windows.Controls.ItemsControl                 System.Windows.Controls.Primitives.Selector                   System.Windows.Controls.ComboBox                   System.Windows.Controls.ListBox                   System.Windows.Controls.TabControl


Слайд 1

Маршрутизация событий Механизм обработки событий WPF базируется на событиях .NET. Новая концепция - маршрутизация событий ( event routing) – события могут подниматься или спускаться по дереву элементов и вызывать обработчики нескольких слушателей (listeners). Три вида событий: С точки зрения реализации маршрутизируемое событие - это событие, которое связано с экземпляром класса RoutedEvent, и обрабатывается системой управления событиями WPF (WPF event system).


Слайд 2

Класс RoutedEvent В классе определены четыре свойства и один метод. Все свойства доступны только для чтения, свои значения они получают при регистрации события с помощью метода RegisterRoutedEvent класса EventManager. Свойства не могут иметь значение null.


Слайд 3

Класс EventManager Статический класс EventManager регистрирует маршрутизируемые события (routed event) и добавляет обработчики класса ( class handlers) – обработчик, который вызывается до вызова обработчиков, связанных с отдельными экземплярами(объектами) класса. В классе всего 4 статических метода.


Слайд 4

Метод RegisterRoutedEvent класса EventManager Метод RegisterRoutedEvent регистрирует новое маршрутизируемое событие в системе управления событиями WPF. public static RoutedEvent RegisterRoutedEvent ( string name, RoutingStrategy routingStrategy, Type handlerType, Type ownerType );


Слайд 5

Пример регистрации маршрутизируемого события Маршрутизируемое событие (routed event) определяется как статическое поле, доступное только для чтения; регистрируется в статическом конструкторе; упаковывается как обычное событие .NET. Событие инициируется при вызове метода RaiseEvent из любого класса, производного от FrameworkUIElement. public class MyButtonSimple : Button { public static readonly RoutedEvent TapEvent = EventManager.RegisterRoutedEvent ( "Tap", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(MyButtonSimple)); public event RoutedEventHandler Tap { add { AddHandler(TapEvent, value); } remove { RemoveHandler(TapEvent, value); } void RaiseTapEvent() { RoutedEventArgs newEventArgs = new RoutedEventArgs(MyButtonSimple.TapEvent); RaiseEvent ( newEventArgs); } protected override void OnClick() { RaiseTapEvent(); } }


Слайд 6

Класс RoutedEventArgs Конструкторы класса RoutedEventArgs:


Слайд 7

Свойства класса RoutedEventArgs Свойства класса RoutedEventArgs доступны в обработчиках маршрутизируемых событий.


Слайд 8

Обработчик класса для маршрутизируемых событий Для маршрутизируемых событий можно определить обработчик класса – статический обработчик, общий для всех экземпляров класса. Обработчики класса вызываются до экземплярных обработчиков. Обработчик класса может установить для события состояние обработанного – присвоить значение true свойству Handled. В этом случае экземплярные объекты вызываться не будут, за исключением тех, которые были зарегистрированы со значением true параметра handledEventsToo. Многие базовые элементы WPF имеют виртуальные обработчики класса. Это дает возможность определить свои версии обработчиков класса без использования вызова метода RegisterClassHandler из статического конструктора класса. В WPF API эти методы определены для событий ввода, их имена начинаются с "On" и включают имя события, например, .


Слайд 9

События времени существования объекта Все объекты классов, производных от FrameworkElement или FrameworkContentElement, имеют три события времени жизни.


Слайд 10

Элементы-контейнеры Класс Window в WPF является производным от класса ContentControl, разрешающего разместить в окне только один дочерний элемент. Чтобы разместить в окне несколько дочерних элементов управления, их необходимо поместить в один из контейнеров, которые могут быть вложены друг в друга. Классы-контейнеры элементов управления являются производными от класса Panel. public abstract class Panel : FrameworkElement, IAddChild {…} public interface IAddChild { void AddChild( Object value ); void AddText( string text ); } public UIElementCollection Children { get; }


×

HTML:





Ссылка: