Я создаю DerivedListBox : ListBox
и DerivedHeaderedContentControl : HeaderedContentControl
, которые будут служить контейнером для каждого элемента в ListBox
.
Чтобы рассчитать размер, доступный для расширенного содержимого DerivedHeaderedContentControl
с, я храню каждый контейнерный объект в списке в пределах DerivedListBox
. Таким образом, я могу вычислить высоту заголовков каждого DerivedHeaderedContentControl
и вычесть ее из общего размера, доступного для DerivedListBox
. Это будет размер, доступный для расширенного содержимого DerivedHeaderedContentControl
.
public class DerivedHeaderedContentControl : HeaderedContentControl
{
// Do some binding to DerivedListBox to calculate height.
}
public class DerivedListBox : ListBox
{
private List<DerivedHeaderedContentControl> containers;
protected override DependencyObject GetContainerForItemOverride()
{
DerivedHeaderedContentControl val = new DerivedHeaderedContentControl();
this.containers.Add(val);
return val;
}
// Do some binding to calculate height available for an expanded
// container by iterating over containers.
}
Проблема возникает, когда DerivedListBox
ItemsSource
очищается (или элемент в источнике предметов удаляется). Как определить, когда очищен ItemsSource
, чтобы очистить список контейнеров?