如何处理silverlight中的单击和双击

时间:2018-01-29 08:35:05

标签: silverlight

我想用silverligh创建绘图应用程序,但我遇到了问题。我有一个颜色矩形当单击矩形时,将描边形状并双击以填充形状。我的下面的代码不能正常工作,当双击第一个ClickCount是1然后增加到2.你能告诉我如何解决它。感谢。

    private void Rect0_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        if (e.ClickCount == 2)
        {
            RectFront1.Fill = Rect0.Fill;
        }
        else
        {
            RectFront.Fill = Rect0.Fill;
        }
    }

1 个答案:

答案 0 :(得分:0)

根据这篇文章(http://www.c-sharpcorner.com/uploadfile/dbd951/how-to-handle-double-click-in-silverlight-5/),e.ClickCount具有以下行为。

根据首次点击和第二次点击之间的时间计算计数。 从帖子中引用。

  

考虑您是否尝试点击5次。第三次点击后,如果你   在第3次和第4次点击之间给出200毫秒的间隙,然后是第4次   点击将被视为第一次点击。它将重置ClickCount   属性,如果第一次单击和第二次单击之间的时间是   大于200毫秒。

另外,你可以考虑使用双击的行为,因为我认为你会经常在绘图应用程序中使用它。 这是一篇好文章: 在框架元素的silverlight中双击事件。 http://blog.cylewitruk.com/2010/10/double-click-event-in-silverlight-on-frameworkelement/

我能想到的第三个选择是使用RX(https://www.nuget.org/stats/packages/Rx-Silverlighthttps://msdn.microsoft.com/library/hh242985.aspx

Observable.FromEvent<MouseButtonEventArgs>(myControl, "MouseLeftButtonDown").TimeInterval().Subscribe(evt =>
    {
        if (evt.Interval.TotalMilliseconds <= 300)
        {
            // Do something on double click
        }
    });

这是这个问题的答案:Cleanest single click + double click handling in Silverlight?