У меня есть listview, где я обработал заголовки столбцов по шаблону, и listview объекты являются шаблонными также. Однако у меня есть другой tempalates для некоторых строк в представлении сетки. Когда пользователь дважды щелкает по заголовку столбца представления списка, куда можно перетащить ширину столбца, заголовок столбца будет автоматический изменять размер, означая, что это увеличит свой размер. Это вызывает проблему для меня, потому что моя ширина заголовка столбца больше не находится в синхронизации с шириной столбцов в моих шаблонах строки.
Существует ли быстрый и простой способ предотвратить это поведение двойного щелчка на заголовке столбца?
Да, настроить обработчик двойного щелчка на самом ListView
. Затем в обработчике используйте такой код:
private void ListView_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (TryFindParent<GridViewColumnHeader>(e.OriginalSource as DependencyObject) != null)
e.Handled = true;
}
Где TryFindParent
определяется как:
public static T TryFindParent<T>(DependencyObject current) where T : class
{
DependencyObject parent = VisualTreeHelper.GetParent(current);
if (parent == null) return null;
if (parent is T) return parent as T;
else return TryFindParent<T>(parent);
}