I found a working solution after digging in the source code of the GridViewColumnHeader. My XAML for ListView with columns:
<ListView.View> <GridView AllowsColumnReorder="False" x:Name="ListGridView"> <GridView.Columns> <GridViewColumn x:Name="ExpandHeader" Width="40"> <GridViewColumn.Header> <GridViewColumnHeader IsHitTestVisible="False" /> </GridViewColumn.Header> </GridViewColumn>
And you need to put such code in the View Loaded event (when creating the columns):
private void ViewOnLoaded(object sender, RoutedEventArgs e) { var fields = typeof(GridViewColumnHeader).GetFields(BindingFlags.NonPublic | BindingFlags.Instance); var thumbFieldInfo = fields.FirstOrDefault(fi => fi.FieldType == typeof(Thumb)); var methods = typeof(GridViewColumnHeader).GetMethods(BindingFlags.NonPublic | BindingFlags.Instance); var eventHandlerMethodInfo = methods.FirstOrDefault(mi => mi.Name == "OnGripperDoubleClicked"); if (thumbFieldInfo != null && eventHandlerMethodInfo != null) { foreach (var column in ListGridView.Columns) { var header = column.Header as GridViewColumnHeader; if (header != null) { var headerGripper = thumbFieldInfo.GetValue(header) as Thumb; if (headerGripper != null) { var handler = Delegate.CreateDelegate(typeof(MouseButtonEventHandler), header, eventHandlerMethodInfo); headerGripper.RemoveHandler(Control.MouseDoubleClickEvent, handler); } } } } }
source share