我认为这是一个简单的情况,但似乎无法想出如何完成它。我对WPF和Caliburn Micro框架非常陌生。在我的View中,我有一个Canvas,在这个Canvas上我有一个Image。 我想编写一些鼠标事件处理程序(MouseLeftButtonDown,MouseLeftButtonUp和MouseMove),当光标位于Image内时调用这些处理程序。 我已经成功地能够在ViewModel中创建事件处理程序,但我似乎无法弄清楚如何在处理程序中获取当前光标位置。MouseEventArgs.GetPosition需要一个IInputElement作为参数……不确定如何获得它。
以下是我的XAML(View)代码:
以下是我的XAML(View)代码:
<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#代码(视图模型)
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??
}
我完成这个任务后,需要将鼠标坐标转换为图像上的坐标...但首先要做好第一步。
谢谢!