Я новичок в WPF, и я учусь, используя книгу Pro WPF C # 2010.
Теперь в главе о событиях книга объясняет, как создавать события и регистрировать события в WPF, и она дает:в качестве примера, код из класса ButtonBase, который является производным от некоторого другого класса, который код не упоминает четко.
Теперь, чтобы понять общую картину, я также попытался создать свой собственный простой класс, ипопытался зарегистрировать событие, которое я постараюсь вызвать позже (только для собственного понимания).
Вот код, который я написал:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Input;
namespace WPFRoutedEvents
{
public class EventTest
{
private string variable = "Event has occured";
public static readonly RoutedEvent myTestEvent;
//Constructor
public static EventTest()
{
EventTest.myTestEvent = EventManager.RegisterRoutedEvent("TestEvent", RoutingStrategy.Bubble, typeof (RoutedEventHandler), typeof(EventTest));
}
public string getVariable()
{
return this.variable;
}
public event RoutedEventHandler myTestEvent
{
add
{
//Here is the problem
// I cannot use base.AddHandler () because it does not exist
}
remove
{
//Here is the problem
// I cannot use base.RemoveHandler() because it does not exist
}
}
}// end of class EventTest
}
Теперь, когда этот класс имеетя не могу получить доступ к функции базового класса AddHandler.
У меня следующие вопросы:
1) В каком классе реализована оригинальная функция AddHandler, из которой мне нужно расширитьмой класс?
2) Кто-нибудь, пожалуйста, кратко объясните конвейер от записи и события до окончательной установки его до точки, где он будет вызывать обработчик, когдаэто происходит, т. е. начинается с реализации события, обработчика события, регистрации события, определения синтаксиса обработчика события (часть кодирования) и конвейера с момента, когда происходит событие en, до его обработки (фактическое выполнение события и события).обработчик).Это поможет мне лучше понять текст.
3) В книге я обнаружил ClickEvent, который уже был реализован где-то, создан, зарегистрирован и, наконец, обработан.Что я хочу знать, так это как программист зарегистрирует какой-то новый тип события, которое еще не было реализовано (например, это может быть тройной щелчок, просто для примера, в противном случае я знаю, что оно существует), а затем зарегистрирует это событие, а затемспроектировать обработчик.
4) Существуют ли какие-либо типы событий или какой-либо другой эквивалент, которые происходят в определенном состоянии данных (некоторая переменная, ресурс и т. д.) вместо некоторого события устройства ввода?Как, например, при перетаскивании нарисовать линию, она достигает определенной длины?
Спасибо!