Хорошо, это действительно сводит меня с ума, и мне нужна помощь.
У меня есть просмотр списка с источником элементов, который имеет несколько столбцов gridview.Когда установлен ItemsSource, размер столбцов соответствует размеру содержимого.
Всякий раз, когда я увеличиваю ширину путем захвата столбца, это увеличивает размер списка, но когда я уменьшаю ширину, он не уменьшается .Согласно этому посту это процесс компоновки WPF.
Я переклассифицировал ListView для переопределения этого поведения и не могу заставить его работать правильно.
Я переопределил функцию MeasureOverride следующим образом:
protected override Size MeasureOverride(Size constraint)
{
var size = base.MeasureOverride(constraint);
var gv = this.View as GridView;
if (gv != null)
{
var width = gv.Columns.Select(a => a.ActualWidth).ToArray();
size.Width = gv.Columns.Sum(a => a.ActualWidth) ;
if (scroll.ScrollableHeight > 0)
size.Width += SystemParameters.ScrollWidth;
}
return size;
}
Что делаетвызвать уменьшение размера списка по желанию, но , если представление списка имеет вертикальную полосу прокрутки, оно исчезает. Я не могу понять, как заставить полосу прокрутки возвращаться программно.
Теперь, если язатем увеличьте ширину сверх первоначальной ширины, полоса прокрутки возвращается (но это через пользовательский интерфейс, а не код. Я просто играл с этим дольше, чем я хочу признать, и я потерян.
Любая идея, что я должен делать, кроме как бросить пытаться?