如何仅在DataGrid';内部双击AttachedCommandBehavior;s区域

本文关键字:内部 双击 区域 AttachedCommandBehavior 何仅 DataGrid | 更新日期: 2023-09-27 18:26:53

我们正在WPF中开发一个应用程序,使用低代码实现编程。我们正在使用大量MVVM和绑定资源。我在网上搜索过,试图找到一种在没有代码隐藏的情况下双击网格的方法,我们发现了AttachedCommandBehavior项目(http://marlongrech.wordpress.com/2008/12/13/attachedcommandbehavior-v2-aka-acb/),但我们遇到了一个意想不到的问题:

当用户单击DataGrid时,工作正常,但单击Columns Header或ScrollViewer时不应触发Mouse_Double_click。那么,我们该如何解决呢?当用户仅在DataGrid的区域内单击时,我们需要AttachedCommandBehavior触发事件。我已经下载了你的源代码,看看他是否得到了被点击的对象,但我没有找到。

致以最良好的问候!

如何仅在DataGrid';内部双击AttachedCommandBehavior;s区域

这就是我们解决问题的方法:我们创建了一个UserControl组件作为DataGrid,并在他的代码中添加了以下内容:

  private void dtgExtended_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        if (sender is Control
            && (!e.OriginalSource.ToString().Equals("Microsoft.Windows.Themes.ScrollChrome") && !e.OriginalSource.ToString().Equals("System.Windows.Shapes.Rectangle")))
        {
            e.Handled = false;
            DataGridDoubleClick c = new DataGridDoubleClick();
        }
        else
            e.Handled = true;
    }

基本上,这只识别用户是否在ScrollBar或ScrollBar区域的矩形内单击。它不会识别是否有任何点击列的标题。

但最终解决了我的问题。