C# 为什么我的DataPager导致抛出多个MouseButtonUp事件?

C# 为什么我的DataPager导致抛出多个MouseButtonUp事件?,c#,silverlight,C#,Silverlight,我有一个DataGrid和一个绑定到DomainDataSource的DataPager。那部分很好用。问题是,我有一个处理双击DataGridRow的函数 private void dataGrid_list_LoadingRow(object sender, DataGridRowEventArgs e) { e.Row.AddHandler(Control.MouseLeftButtonDownEvent, new MouseButtonEventHandl

我有一个DataGrid和一个绑定到DomainDataSource的DataPager。那部分很好用。问题是,我有一个处理双击DataGridRow的函数

    private void dataGrid_list_LoadingRow(object sender, DataGridRowEventArgs e)
    {
        e.Row.AddHandler(Control.MouseLeftButtonDownEvent, new MouseButtonEventHandler(Row_MouseLeftButtonDown), true);
    }
Row_MouseLeftButtonDown的实际逻辑并不重要。它工作正常,除了有一次我用DataPager点击了另一个页面。现在我展示了我已经同时触发了两次鼠标点击(这会在不应该的时候触发我的双击)。如果我点击四个页面,当我点击一行时,我会记录五次点击(一次点击行,我猜每次我点击DataPager更改页面时都会记录一次)


你知道为什么会发生这种情况,以及我如何解决它吗?我尝试在页面上放置一个不做任何事情的随机按钮,并单击该按钮不会导致此问题,因此它似乎不只是任何单击。

每次调用
dataGrid\u list\u LoadingRow
时都会注册此事件,这必须在您单击另一页面时发生

private void dataGrid_list_LoadingRow(object sender, DataGridRowEventArgs e)
{
    e.Row.RemoveHandler(Control.MouseLeftButtonDownEvent, Row_MouseLeftButtonDown);
    e.Row.AddHandler(Control.MouseLeftButtonDownEvent, Row_MouseLeftButtonDown, true);
}
在第一次点击时,
RemoveHandler
不会引起任何问题,因为它不会产生任何影响,根据。但在第二次命中此函数时,它将删除最初注册的处理程序,并只需再次添加它。这样,您就不必一直建立已注册处理程序的列表


另外,
不需要新的MouseButtonEventHandler(Row\u MouseLeftButtonDown)
,您只需使用
Row\u MouseLeftButtonDown
(请参阅)

每次调用
dataGrid\u list\u LoadingRow
时都会注册该事件,每次单击另一页时都必须发生该事件

private void dataGrid_list_LoadingRow(object sender, DataGridRowEventArgs e)
{
    e.Row.RemoveHandler(Control.MouseLeftButtonDownEvent, Row_MouseLeftButtonDown);
    e.Row.AddHandler(Control.MouseLeftButtonDownEvent, Row_MouseLeftButtonDown, true);
}
在第一次点击时,
RemoveHandler
不会引起任何问题,因为它不会产生任何影响,根据。但在第二次命中此函数时,它将删除最初注册的处理程序,并只需再次添加它。这样,您就不必一直建立已注册处理程序的列表


另外,
不需要新的MouseButtonEventHandler(Row\u MouseLeftButtonDown)
,您只需使用
Row\u MouseLeftButtonDown
(请参阅)

啊哈!就这样!我从来没有想过,处理程序被添加了一次又一次。我被这个难住了,谢谢!啊哈!就这样!我从来没有想过,处理程序被添加了一次又一次。我被这个难住了,谢谢!