我已经实现了一个WPF项目,该项目呈现来自微型表面光度仪的3D网格数据。
因为我已经在WinForms上实现了大部分2D数据分析工作;我想创建一个由winform应用程序调用的WPF类的用户控件。 而我做到了。 问题是在WPF类中触发了鼠标事件,我可以旋转,缩放和移动网格; 但是当我在winform应用程序中插入用户控件时,网格成功创建;但根本没有触发鼠标事件。 (但它们是在用户控件中实现的)
我错过了一些逻辑吗?
以下是WPF鼠标事件的代码
public void OnViewportMouseDown(object sender, System.Windows.Input.MouseButtonEventArgs args)
{
Point pt = args.GetPosition(mainViewport);
if (args.ChangedButton == MouseButton.Left) // rotate or drag 3d model
{
m_transformMatrix.OnLBtnDown(pt);
}
}
public void OnViewportMouseMove(object sender, System.Windows.Input.MouseEventArgs args)
{
Point pt = args.GetPosition(mainViewport);
if (args.LeftButton == MouseButtonState.Pressed) // rotate or drag 3d model
{
m_transformMatrix.OnMouseMove(pt, mainViewport);
TransformChart();
}
}
public void OnViewportMouseUp(object sender, System.Windows.Input.MouseButtonEventArgs args)
{
Point pt = args.GetPosition(mainViewport);
if (args.ChangedButton == MouseButton.Left)
{
m_transformMatrix.OnLBtnUp();
}
}
}
这是使用WPF用户控件的winform
public partial class MeshViewer: Form
{
wpfControlLib.UserControl1 userControl;
public MeshViewer(double[,] d)
{
InitializeComponent();
userControl = new wpfControlLib.UserControl1(d);
elementHost1.Child = userControl;
elementHost1.Show();
}
}
我尝试在winform类中放置相同的鼠标事件处理程序,然后调用WPF类的相应鼠标事件,但WinForms和WPF中的鼠标事件args不同......我不认为这是正确的道路......