首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在DragMove之后从未调用过MouseLeftButtonUp

在DragMove之后从未调用过MouseLeftButtonUp
EN

Stack Overflow用户
提问于 2014-01-15 02:22:27
回答 1查看 250关注 0票数 0

我在XAML中有一个元素,用于在单击元素并按住鼠标按键时触发DragMove。

代码语言:javascript
复制
<Grid>
    <CheckBox x:Name="myCheckBox" IsChecked="{Binding IsDragging}">I am red square dragging!</CheckBox>
    <Rectangle x:Name="myRect" Width="100" Height="100" Fill="Red"/>
</Grid>

事件处理是通过以下方式在代码背后完成的:

代码语言:javascript
复制
    protected override void OnInitialized(EventArgs e)
    {
        base.OnInitialized(e);

        myRect.MouseLeftButtonDown += myRect_MouseLeftButtonDown;
        myRect.MouseLeftButtonUp += myRect_MouseLeftButtonUp;
    }

    void myRect_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        IsDragging = false;
    }

    void myRect_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        IsDragging = true;
        DragMove();
    }

尽管拖动可以正常工作,但从不调用myRect_MouseLeftButtonUp,因此IsDragging在设置为true后永远不会设置为false。我该怎么做呢?

作为额外的奖励,这里有一个免费的元素图像,可以诱使您回答这个问题。

EN

回答 1

Stack Overflow用户

发布于 2014-01-15 02:32:24

DragMove是以MouseLeftButtonUp结尾的阻塞事件。可以使用以下命令来诱导正确的行为

代码语言:javascript
复制
    void myRect_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        IsDragging = true;
        DragMove();            
        myRect.RaiseEvent(new MouseButtonEventArgs(e.MouseDevice, e.Timestamp, MouseButton.Left)
        {
            RoutedEvent = MouseLeftButtonUpEvent
        });
    }

另请参阅C# WPF - DragMove and click

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21121044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档