Я реализовал проект WPF, который визуализирует трехмерную сетку данных, поступающих с микропрофилометра.
Поскольку я уже реализовал большую часть работы по анализу 2D-данных на WinForms;Я хочу создать пользовательский элемент управления класса WPF, который вызывается приложением winform.И я сделал.Проблема в том, что в классе 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();
}
}
}
И этоwinform, использующий пользовательский элемент управления WPF
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 ... и я не думаю, что это правильный путь ...