通过在Silverlight中拖动来解决Pan问题

时间:2009-09-27 19:33:32

标签: silverlight silverlight-3.0

  

可能重复:
  Grab-to-pan in Silverlight app

我在ScrollViewer中有一个Canvas; Canvas将在其上绘制几个对象 我希望能够使用鼠标平移滚动 - 画布:LButtonDown - 移动鼠标 - LButtonUp。
在.xaml中,我有一个Canvas的TranslateTransform 代码:

private void MapCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
        ClickPosition = e.GetPosition(MapCanvas);
        Debug.WriteLine("LButtonDown: " + ClickPosition.ToString());
        MapCanvas.CaptureMouse();
        IsMouseCaptured = true;

        e.Handled = true;
 }
 private void MapCanvas_MouseMove(object sender, MouseEventArgs e)
 {
     if (IsMouseCaptured)
     {
         Point point = new Point(e.GetPosition(MapCanvas));
         Debug.WriteLine("\t" + point.ToString());
         MapPanTransform.X = point.X - ClickPosition.X;
         MapPanTransform.Y = point.Y - ClickPosition.Y;
     }
 }

这导致MapCanvas_MouseMove中出现一些奇怪的点:
LButtonDown 557,469
    556469个
     368472
    555469个
     367472
    554469个
     365472
    553,469

有关正在发生的事情的任何想法? 感谢。

1 个答案:

答案 0 :(得分:0)

是否有任何控件覆盖您尝试移动的画布?您可以查看isHitTestVisible属性。如果我理解正确,它会使控件上的鼠标事件透明,以便所有事件发生在控件“下方”的控件上,其中isHitTestVisible为false。