WPF数据表格双击行详细模板也会触发父行的双击事件

3
我有一个显示数据的WPF Datagrid。对于在DataGrid中显示的每个项目,都可以展开以显示使用RowDetailsTemplate显示的详细数据。DataGrid行和RowDetailsTemplate都处理双击事件。
问题是,当双击RowDetailsTemplate时,双击事件被正确触发,但是父行的双击事件也被触发了。这是不希望的行为。
有没有人知道如何解决这个问题,使得只有在RowDetailTemplate上双击才会触发RowDetailsTemplate的双击事件,而不是它的父行的双击事件?
2个回答

2
我遇到了这个问题,观察到了两个事件,所以将e.Handled设置为true并没有起到帮助的作用。
我找不到比保留一个布尔型的“锁定”变量更好的解决方法:
private bool lockDoubleClick;

private void dgParent_OnMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    if (lockDoubleClick) return;
    // parent was double-clicked; do something
}

private void dgChild_OnMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    lockDoubleClick = true;
    // child was double-clicked; do something
    Dispatcher.BeginInvoke(new Action(() => lockDoubleClick = false));
}

我得出了和你一样的结论。感谢你发布这个解决方法。 - Wallace Kelly

1

这个事件可能正在冒泡,你可以尝试设置

e.Handled = true;

在行详细信息的双击处理程序中,防止父控件处理。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接