Helix Toolkit如何使用MouseWheelEventHandler在其他类中运行特定方法

时间:2019-01-25 01:26:50

标签: mouseevent mousewheel eventhandler helix-3d-toolkit eventargs

每当用户在我的程序正在其中运行的helix工具箱视图中放大或缩小时,我都希望运行自定义Camera类的特定方法。 此功能的主要功能是从事件中获取mouseargs,因此我可以按照与滚动刻度数成比例的方式调整摄影机。

我开始尝试:

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)); }

但是在试图将onMouseWheeled方法添加到MouseWheelEventHandler时,如何确定如何将MouseWheelEventArgs对象传递到onMouseWheeled方法时遇到了很多麻烦。假设该句子从根本上来说并没有错,这不过是一厢情愿的想法。我要弄清楚的最后一件事是如何获取鼠标滚轮事件args,以便可以将其传递给方法。

然后我尝试了这个:

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的子级。

基本上我的主要问题是:

调用实际上是做什么的?我只有运行此命令才能查看其是否正常运行,因为我一直使用的onPropertyChanged方法像这样运行Invoke命令。我实际上不确定我要去哪里。

处理程序如何工作?

如何调用事件args,以便我可以使用它们并将它们作为对象传递给其他方法?

谢谢您的时间。再次感谢您提供的所有建议和建议。

1 个答案:

答案 0 :(得分:0)

尝试使用预览鼠标滚轮事件