Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
В качестве примера обработайте событие
MouseMoveSystem.Windows.Input.MouseEventHandlerSystem.Windows.Input.MouseEventArgsMouseEventArgspublic class MouseEventArgs : InputEventArgs{ ... public Point GetPosition(IInputElement relativeTo); public MouseButtonState LeftButton { get; } public MouseButtonState MiddleButton { get; } public MouseDevice MouseDevice { get; } public MouseButtonState RightButton { get; } public StylusDevice StylusDevice { get; } public MouseButtonState XButton1 { get; } public MouseButtonState XButton2 { get; }}На заметку! Свойства
XButton1XButton2Метод
GetPosition()thisMouseMoveМаinWindowpublic MainWindow(string windowTitle, int height, int width){ ... this.MouseMove += MainWindow_MouseMove;}Ниже приведен обработчик события
MouseMovePointToString()private void MainWindow_MouseMove(object sender, System.Windows.Input.MouseEventArgs e){ // Отобразить в заголовке окна текущую позицию (х, у) курсора мыши. this.Title = e.GetPosition(this).ToString();}Перехват событий клавиатуры
Обработка клавиатурного ввода для окна, на котором находится фокус, тоже очень проста. В классе
UIElementKeyUpKeyDownKeyUpKeyDownSystem.Windows.Input.KeyEventHandlerKeyEventArgspublic class KeyEventArgs : KeyboardEventArgs{ ... public bool IsDown { get; } public bool IsRepeat { get; } public bool IsToggled { get; } public bool IsUp { get; } public Key Key { get; } public KeyStates KeyStates { get; } public Key SystemKey { get; }}Чтобы проиллюстрировать организацию обработки события
KeyDownМаinWindowprivate void MainWindow0s_KeyDown(object sender, System.Windows.Input.KeyEventArgs e){<b> // Отобразить на кнопке информацию о нажатой клавише.</b> ClickMe.Content = e.Key.ToString();}К настоящему моменту WPF может показаться всего лишь очередной инфраструктурой для построения графических пользовательских интерфейсов, которая предлагает (в большей или меньшей степени) те же самые службы, что и Windows Forms, MFC или VB6. Если бы это было именно так, тогда возникает вопрос о смысле наличия еще одного инструментального набора, ориентированного на создание пользовательских интерфейсов. Чтобы реально оценить уникальность WPF, потребуется освоить основанную на XML грамматику — XAML.
Резюме
Инфраструктура Windows Presentation Foundation (WPF) представляет собой набор инструментов для построения пользовательских интерфейсов, появившийся в версии .NET 3.0. Основная цель WPF заключается в интеграции и унификации множества ранее разрозненных настольных технологий (двумерная и трехмерная графика, разработка окон и элементов управления и т.п.) в единую программную модель. Помимо этого в приложениях WPF обычно применяется язык XAML, который позволяет определять внешний вид и поведение элементов WPF через разметку.
Вспомните, что язык XAML позволяет описывать деревья объектов .NET с использованием декларативного синтаксиса. Во время исследования XAML в данной главе вы узнали о нескольких новых фрагментах синтаксиса, включая синтаксис "свойство-элемент" и присоединяемые свойства, а также о роли преобразователей типов и расширений разметки XAML.
Разметка XAML является ключевым аспектом любого приложения WPF производственного уровня. В финальном примере главы было построено приложение WPF, которое продемонстрировало многие концепции, обсужденные в главе. В последующих главах эти и многие другие концепции будут рассматриваться более подробно.