【问题标题】:How to get drag working properly in silverlight when mouse is not pressed?未按下鼠标时如何使拖动在silverlight中正常工作?
【发布时间】:2010-11-18 00:07:45
【问题描述】:

我有以下代码

  • xaml

    <Canvas x:Name="LayoutRoot" >
        <Rectangle Canvas.Left="40" Canvas.Top="40" Width="20" Height="20" Name="rec" Fill="Red" MouseLeftButtonDown="rec_MouseLeftButtonDown"   MouseMove="rec_MouseMove" />
    </Canvas>
    

  • 隐藏代码

公共部分类 MainPage : UserControl { 公共主页() { 初始化组件(); }

        public Point LastDragPosition { get; set; }
        private bool isDragging;

        private void rec_MouseMove(object sender, MouseEventArgs e)
        {
            if(!isDragging)
            {
                return;
            }

            var position = e.GetPosition(rec as UIElement);

            var newPosition = new Point(
                Canvas.GetLeft(rec) + position.X - LastDragPosition.X,
                Canvas.GetTop(rec) + position.Y - LastDragPosition.Y);

            Canvas.SetLeft(rec, newPosition.X);
            Canvas.SetTop(rec, newPosition.Y);

            LastDragPosition = e.GetPosition(rec as UIElement);
        }

        private void rec_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            isDragging = true;
            LastDragPosition = e.GetPosition(sender as UIElement);
            rec.CaptureMouse();
        }
    }

这个问题是如果鼠标左键按下,矩形会跟随鼠标,但我希望即使鼠标左键没有按下,矩形也会移动。它可以工作,但是如果您移动鼠标非常缓慢。如果您快速移动鼠标,则矩形停止移动(鼠标捕获是否丢失?)

干杯,

【问题讨论】:

  • 实现鼠标进入和离开事件,而不是向下和向上。这将起作用。

标签: silverlight drag-and-drop


【解决方案1】:

看来做不到了。根据 CaptureMouse 的文档,必须按下左键。 “鼠标左键处于按下(按下)状态。”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多