【问题标题】:Display mouse position in Silverlight 5, MVVM在 Silverlight 5、MVVM 中显示鼠标位置
【发布时间】:2013-05-14 18:44:02
【问题描述】:

郑重声明:我是 Silverlight 和 XAML 的新手。

我试图在我的画布(或任何其他元素)中简单地显示鼠标相对坐标。 在阅读了很多关于这个主题的内容之后,不幸的是我还没有意识到这一点。 我的 Silverlight 5 项目使用 MVVM 和 Caliburn micro。

如何做到这一点? 非常感谢您对实现这一点的帮助。

谢谢, 伙计。

【问题讨论】:

    标签: c# .net silverlight mvvm mousemove


    【解决方案1】:

    您需要更具体地说明您尝试使用什么控件,但是您是否尝试过将某些东西连接到MouseMove 事件?赞MouseMove="Handle_MouseMove"

    public void Handle_MouseMove(object sender, MouseEventArgs args) 
    {
        mouseVerticalPosition = args.GetPosition(null).Y;
        mouseHorizontalPosition = args.GetPosition(null).X;
    }
    

    这就是你要找的吗?

    如果您希望在整个画布上发生这种情况,您可以改为将其连接到 PointerMoved

    MouseEventArgs。这可以让您获得XY 位置,并且可以与MouseUpMouseDownMouseMove 事件一起使用。

    【讨论】:

    • 如何在不使用代码隐藏的情况下做到这一点? (使用 MVVM)我正在使用 Caliburn.Micro,但我没有找到将 MouseMove 事件函数绑定到 ViewModel 的方法。
    【解决方案2】:

    要完成 tnw 答案:您必须 start mouse capture on objectMyElement.CaptureMouse()

    在处理程序方法中,您可以在MouseEventArgs 上使用GetPosition,并在参数中使用 UIElement 作为相对坐标...

    public void Handle_MouseMove(object e, MouseEventArgs f)
    {
         var point = f.GetPosition(MyElement);
    }
    

    【讨论】:

      【解决方案3】:

      您必须捕获鼠标单击事件,并且您可以使用一些事件处理程序来捕获位置。

      private void CadLayoutRoot_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
          {
                      double point1 = e.GetPosition(bitmapCadView.UIElement).X;
                      double point2 = e.GetPosition(bitmapCadView.UIElement).Y;
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-13
        相关资源
        最近更新 更多