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

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

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

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 Ответ

0 голосов
/ 25 января 2019

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

...