1. 程式人生 > >解決WPF 快速點選Datagrid出現異常問題

解決WPF 快速點選Datagrid出現異常問題

在WPF開發中最近遇到一個很變態的問題:快速點選Datagrid之後,再對Datagrid操作時會出現如下異常

                     

        private void dtgSchemeApp_PreviewMouseDown(object sender, MouseButtonEventArgs e)
        {
            if (IsUnderTabHeader(e.OriginalSource as DependencyObject))
            {
                CommitTables(this.LV_Points);
            }
                
        }

        private bool IsUnderTabHeader(DependencyObject control)
        {
            if (control is Border)
                return true;
            DependencyObject parent = VisualTreeHelper.GetParent(control);
            if (parent == null)
                return false;
            return IsUnderTabHeader(parent);
        }

        private void CommitTables(DependencyObject control)
        {
            if (control is DataGrid)
            {
                DataGrid grid = control as DataGrid;
                grid.CommitEdit(DataGridEditingUnit.Row, true);
                return;
            }
            int childrenCount = VisualTreeHelper.GetChildrenCount(control);
            for (int childIndex = 0; childIndex < childrenCount; childIndex++)
                CommitTables(VisualTreeHelper.GetChild(control, childIndex));
        }