Helix Toolkit Как использовать MouseWheelEventHandler для запуска определенных методов в других классах

Я хотел бы запускать определенные методы пользовательского класса Camera всякий раз, когда пользователь увеличивает или уменьшает масштаб представления helix toolkit, внутри которого выполняется моя программа. Ключевой особенностью этой функции является получение указателей мыши с события, чтобы я мог настроить камеру так, чтобы она была пропорциональна количеству тактов прокрутки.

Я начал пробовать это:

public event PropertyChangedEventHandler PropertyChanged;

public virtual void onMouseWheeled(MouseDevice Mouse, int time, 
MouseWheelEventArgs e) {
    MouseWheel?.Invoke(this, new MouseWheelEventArgs(Mouse, time, 
e.Delta)); }

//This next line goes in a MainWindow_Loaded method that gets called in the 
//MainWindowConstructor

void MainWindow_Loaded(object sender, RoutedEventArgs e) {
    view1.MouseWheel += new MouseWheelEventHandler(onMouseWheeled(Cursor, 
Time.simTime, view1.MouseWheeledEventArgs)); }

но у меня были большие проблемы с выяснением того, как передать объект MouseWheelEventArgs в метод onMouseWheeled, когда я пытаюсь добавить метод onMouseWheeled в MouseWheelEventHandler. Предполагая, что в этом предложении нет ничего принципиально неправильного, что является не более чем желаемым размышлением. Последнее, что я пытаюсь выяснить, - это как получить аргументы события колеса мыши, чтобы я мог передать его в метод.

Тогда я попробовал это:

public event MouseWheelEventHandler MouseWheel;

public virtual void onMouseWheeled(object sender, MouseWheelEventArgs e)
{
    Console.WriteLine(e.Delta);
}
//In Main Window Loaded method...
void MainWindow_Loaded(object sender, RoutedEventArgs e) 
{
view1.MouseWheel += onMouseWheeled;
}

Но я не получаю вывод, когда прокручиваю колесо. Я предположил, что это может сработать, потому что view1 - это окно спирали, к которому я присоединяю все свои объекты как дочерние элементы view1.

В основном мои основные вопросы:

Что на самом деле делает invoke? У меня есть только этот запуск, чтобы попытаться увидеть, работает ли он, потому что методы onPropertyChanged, которые я всегда использую, запускают команду Invoke следующим образом. Я на самом деле не уверен, куда я иду с этим.

Как работает обработчик?

Как вызываются аргументы событий, чтобы я мог использовать их и передавать как объекты другим методам?

Спасибо за ваше время. И еще раз спасибо за любые советы и рекомендации, которые вы можете дать мне.

1 ответ

Решение

Попробуйте использовать предварительный просмотр колеса мыши

Другие вопросы по тегам