Я пытаюсь организовать пользовательский интерфейс WPF следующим образом:
- В верхней части окна есть несколько элементов управления с самоопределением высоты (фактически пристыкованных к верхней части окна, но настолько высоких, насколько они хотят).
- Под этими элементами управления находится ListView. ListView может содержать переменное количество элементов, каждый из которых имеет разную высоту. Проблема: ListView не должен быть выше, чем нужно. Если все элементы в представлении списка легко поместятся в окне, я хочу, чтобы ListView был именно такой высоты, чтобы отображались все его элементы (чтобы окно выглядело как плавный макет веб-страницы с пустым пространством). внизу). С другой стороны, если все элементы ListView не помещаются в окно, я хочу, чтобы весь пользовательский интерфейс помещался в окно (как если бы номер 3 ниже был прикреплен к нижней части окна, а элемент ListView заполнял доступное пространство). Все это должно динамически корректироваться по мере того, как пользователь изменяет размер окна и/или нажимает кнопки, которые изменяют содержимое представления списка.
- Под ListView есть еще несколько элементов управления самоопределением высоты. Они должны постоянно появляться непосредственно под ListView, без пробелов. В частности, они не должны просто пристыковываться к нижней части окна, если они помещаются непосредственно под ListView.
Решения будут очень кстати; Я некоторое время возился, и мне удалось заставить все работать, кроме элементов управления под ListView, используя внешнюю DockPanel в окне с первыми элементами управления, закрепленными вверху, и ListView, заполняющим оставшиеся пробел, но установите значение VerticalAlignment="Top".
Решение на чистом XAML было бы идеальным, но я не возражаю против кода, если это неизбежно. Бонусные баллы за решение, которое позволяет размещать несколько таких композиций вертикально :) Спасибо за любую помощь!