我有一个我认为简单的情况,但似乎无法弄清楚如何完成它。我对 WPF 和 Caliburn Micro 框架非常陌生。在我看来,我有一个画布,在这个画布上我有一个图像。我想编写一些鼠标事件处理程序(MouseLeftButtonDown、MouseLeftButtonUp 和 MouseMove),当光标在图像内时调用它们。我已经成功地能够在 ViewModel 中创建事件处理程序,但我似乎无法弄清楚如何在处理程序中获取当前光标位置。MouseEventArgs.GetPosition 需要一个 IInputElement 作为参数......不知道如何得到它。
这是我的 XAML(视图):
<Canvas x:Name="ImageCanvas" >
<Image Source="{Binding DataImage}"
x:Name="ContainerImage"
cal:Message.Attach=
"[Event MouseLeftButtonDown] = [Action MouseDown_Image($source, $eventArgs)];
[Event MouseLeftButtonUp] = [Action MouseUp_Image($source, $eventArgs)];
[Event MouseMove] = [Action MouseMove_Image($source, $eventArgs)]">
</Image>
</Canvas>
这是我的 C# (viewmodel)
public void MouseDown_Image(object sender, MouseEventArgs e)
{
// How do I get cursor position here??
// convert to Image coordinates??
}
public void MouseUp_Image(object sender, MouseEventArgs e)
{
// How do I get cursor position here??
// convert to Image coordinates??
}
public void MouseMove_Image(object sender, MouseEventArgs e)
{
// How do I get cursor position here??
// convert to Image coordinates??
}
完成此操作后,我需要将鼠标坐标转换为图像上的坐标……但首先要做的是。
谢谢!!