1 / 11

Классы Windows Presentation Foundation - 1

Классы Windows Presentation Foundation - 1.

Télécharger la présentation

Классы Windows Presentation Foundation - 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Классы Windows Presentation Foundation - 1 System.Object  System.Windows.Threading.DispatcherObjectSystem.Windows.DependencyObjectSystem.Windows.Media.VisualSystem.Windows.UIElement          System.Windows.FrameworkElement            System.Windows.Controls.Control              System.Windows.Controls.ItemsControlSystem.Windows.Controls.Primitives.Selector                  System.Windows.Controls.ComboBox                  System.Windows.Controls.ListBox                  System.Windows.Controls.TabControl

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

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

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

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

  6. Пример регистрации маршрутизируемого события • Маршрутизируемое событие (routed event) • определяется как статическое поле, доступное только для чтения; • регистрируется в статическом конструкторе; • упаковывается как обычное событие .NET. • Событие инициируется при вызове метода RaiseEvent из любого класса, производного от FrameworkUIElement. public class MyButtonSimple: Button {public static readonly RoutedEventTapEvent = 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(); } }

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

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

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

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

  11. Элементы-контейнеры • Класс 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; }

More Related