Как изменить размер столбца GridView после его инициализации?

Обновленная проблема:

В WPF я использую GridView (внутри a ListView), чтобы отобразить список пар Textbox-Slider. Каждая такая пара расположена ровно в одной ячейке одного столбца (с помощью DockPanel для каждой пары).

Ползунок имеет минимальную ширину, так что он не сжимается, текстовое поле не меняется, оно динамически изменяется при приеме ввода.

Проблема заключается в том, что при увеличении ширины текстового поля ширина столбца не эквивалентно изменяется. Это приводит к тому, что слайдер в соответствующей строке визуально обрезается с правой стороны. В результате ручка ползунка исчезает в пустоте при перемещении в правый конец.

Итак, вопрос: как заставить ширину столбца gridview динамически изменять размер, если содержимое превышает доступное пространство (которое было установлено во время инициализации)?

Просто игнорируйте метку между текстовым полем и ползунком (без этого поведение не меняется).

3 ответа

один из способов сделать это - принять событие метки и buble в сетку (sizeChanged), а затем изменить размер сетки пропорционально размеру мастей...


Некоторые контейнеры, возможно, скопируют его с помощью ClipToBounds или в зависимости от того, как реализованы цвета фона, они могут накладываться на другой столбец.


Size containerSize=new Size(100, 100);
public Size CalculateSize(FrameworkElement visualBlock, Size containerSize)
{
 visualBlock.Measure(containerSize);
 return visualBlock.DesiredSize;
}

Этот код получает размер элемента framework для рендеринга внутри контейнера. После этого вы можете установить размер программно. Необходимо знать размер родителя для правильной работы.

licensed under cc by-sa 3.0 with attribution.