private bool CheckNeedReset(GridColumn masterCol, GridColumn detailCol) { int key = detailCol.VisibleIndex; GridColumn storedMasterColumn = null; GridColumn storedDetailColumn = null; masterColumns.TryGetValue(key, out storedMasterColumn); detailColumns.TryGetValue(key, out storedDetailColumn); if (masterCol == null && storedMasterColumn != null) { DependencyPropertyDescriptor.FromProperty(GridColumn.VisibleProperty, typeof(GridColumn)).RemoveValueChanged(storedMasterColumn, OnMasterColumnVisibleChanged); return(true); } if (storedDetailColumn == null) { return(true); } if (masterCol.GetHashCode() != storedMasterColumn.GetHashCode() || detailCol.GetHashCode() != storedDetailColumn.GetHashCode()) { DependencyPropertyDescriptor.FromProperty(GridColumn.VisibleProperty, typeof(GridColumn)).RemoveValueChanged(storedMasterColumn, OnMasterColumnVisibleChanged); DependencyPropertyDescriptor.FromProperty(GridColumn.VisibleProperty, typeof(GridColumn)).RemoveValueChanged(storedDetailColumn, OnDetailColumnVisibleChanged); return(true); } return(false); }