:
private void ListView_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (TryFindParent<GridViewColumnHeader>(e.OriginalSource as DependencyObject) != null)
e.Handled = true;
}
TryFindParent
는 다음과 같이 정의된다. 열 ListView에 대한 나의 XAML은 다음과 같습니다
<ListView.View>
<GridView AllowsColumnReorder="False" x:Name="ListGridView">
<GridView.Columns>
<GridViewColumn x:Name="ExpandHeader"
Width="40">
<GridViewColumn.Header>
<GridViewColumnHeader IsHitTestVisible="False" />
</GridViewColumn.Header>
</GridViewColumn>
그리고 당신은 (열을 만들 때) 뷰의로드 이벤트에 다음과 같은 코드를 삽입해야합니다
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);
}
}
}
}
}
이상한 .. upvoted과 대답을 받아, 그러나'e.Handled = true'를 설정해도 필자의 경우에는 자동 크기 조정에서 열을 방지하지 못합니다. 나는 이것을 테스트하기 위해 새로운 wpf 솔루션을 만들었다. 작동하지 않습니다. – Sinatr