Как сделать WPF ListView не выше, чем его содержимое, но вписывается в окно с другими элементами управления?

Я пытаюсь организовать пользовательский интерфейс WPF следующим образом:

Mock up

  1. В верхней части окна находятся некоторые элементы управления самоопределяющейся высотой (фактически закреплены в верхней части окна, но такой же высоты, как и они хотите быть).
  2. Под этими элементами управления находится ListView. ListView может содержать переменное количество элементов, каждый разной высоты. Проблема: ListView не должен быть выше, чем должен быть. Если все элементы в представлении списка легко помещаются в окно, я хочу, чтобы ListView был ровно той высоты, чтобы отображать все его элементы (чтобы окно выглядело как плавный макет веб-страницы с пустым пространством на дно). С другой стороны, если все элементы ListView не помещаются в окно, я хочу, чтобы весь пользовательский интерфейс соответствовал окну (как если бы номер 3 ниже был пристыкован к нижней части окна, а ListView заполнял доступное пространство). Все это должно динамически регулироваться, когда пользователь изменяет размер окна и / или нажимает кнопки, которые изменяют содержимое представления списка.
  3. Под ListView находятся еще несколько элементов управления самоопределяющейся высотой. Они должны всегда появляться непосредственно под ListView без промежутков. В частности, они не должны просто пристыковываться к нижней части окна, если они помещаются непосредственно под ListView.

Решения будут очень приветствоваться; Некоторое время я возился, и мне удалось заставить все работать , кроме элементов управления под ListView, используя внешнюю DockPanel в окне с первыми элементами управления, закрепленными вверху, а ListView заполняет оставшееся пространство но установлено значение VerticalAlignment = "Top".

Идеальным вариантом было бы решение на чистом XAML, но я не возражаю против кода, если это неизбежно. Бонусные баллы за решение, которое позволяет размещать несколько таких устройств вертикально :) Спасибо за любую помощь!

14
задан El Zorko 16 March 2011 в 01:02
поделиться