none
如何使控件被拖拽到屏幕边缘时自动弹回? RRS feed

  • 问题

  • 我希望使自定义控件被用户快速拖拽出屏幕边缘后自动消失,如果用户拖拽速度较慢,就让它往回弹。

    现在在 ManipulationDelta 函数里判断是否超出屏幕边缘,通过 e.Velocities.Linear 获取当前直线速度,不过怎么能让它弹回呢?或者说怎么缓慢移动一个控件呢?

    谢谢

    2012年11月10日 13:59

答案

  • 缓慢移动只能靠动画实现,否则直接设置控件位置的话是没有缓慢移动效果的。

    关于边界问题,首先你先要得到控件的边界,下面的代码可以得到控件在屏幕上的边界范围。

            public static Rect GetElementRect(FrameworkElement element)
            {
                GeneralTransform buttonTransform = element.TransformToVisual(null);
                Point point = buttonTransform.TransformPoint(new Point());
                return new Rect(point, new Size(element.ActualWidth, element.ActualHeight));
            }

    然后你可以基于这个Rect结构中的数值来判断是否小于0或者大于屏幕宽高 Window.Current.Bounds

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年11月12日 8:03
    版主