Я бы попытался решить эту проблему: создать ValueConverter
, который смотрит на количество элементов в вашем List<T>
и выполняет математические расчеты, чтобы вычислить, насколько высокими должны быть отдельные элементы StackPanel
. Затем он вернул бы это значение как int
.
Чтобы собрать все воедино, в своем XAML вы должны связать свое свойство StackPanel.Height
со свойством Count
в вашем List<T>
, указав ValueConverter
в качестве конвертера свойства.
DataContext
может быть немного сложнее, когда вы пытаетесь получить доступ к свойству Count
, так как StackPanel
будет иметь DataContext
, установленный для отдельного элемента списка. Но вы, вероятно, можете обойти это, добавив свойство Count
к каждому элементу в вашем списке.
Вот хороший пост] (http://www.jeff.wilcox.name/2008/07/visibility-type-converter/) о ValueConverter
. Он охватывает преобразование свойства bool
в Visibility
, но концепции те же.