记录:我是Silverlight和XAML的新手。
我试图在画布(或任何其他元素)中简单地显示鼠标坐标。 在阅读了很多关于这个主题的内容之后,不幸的是我还没有想到这一点。 我的Silverlight 5项目使用MVVM和Caliburn micro。
如何做到这一点? 会对实施这项工作表示赞赏。
谢谢, 盖
答案 0 :(得分:2)
您需要更加具体地了解您尝试使用的控件,但是您是否尝试过将某些内容连接到MouseMove
事件?与MouseMove="Handle_MouseMove"
public void Handle_MouseMove(object sender, MouseEventArgs args)
{
mouseVerticalPosition = args.GetPosition(null).Y;
mouseHorizontalPosition = args.GetPosition(null).X;
}
这就是你要找的东西吗?
如果您希望在整个画布上进行此操作,则可以将其连接到PointerMoved
见MouseEventArgs。这可以为您提供X
和Y
位置,并且可以与MouseUp
,MouseDown
和MouseMove
事件一起使用。
答案 1 :(得分:0)
完成tnw答案:您必须start mouse capture on object:MyElement.CaptureMouse()
在处理程序方法中,您可以在GetPosition上使用MouseEventArgs,并在参数中使用UIElement作为相对坐标...
public void Handle_MouseMove(object e, MouseEventArgs f)
{
var point = f.GetPosition(MyElement);
}
答案 2 :(得分:0)
你必须抓住鼠标点击事件,并且有一些事件处理程序可以用它来捕获位置。
private void CadLayoutRoot_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
double point1 = e.GetPosition(bitmapCadView.UIElement).X;
double point2 = e.GetPosition(bitmapCadView.UIElement).Y;
}