2009-10-26 4 views
0

Я создаю DerivedListBox : ListBox и DerivedHeaderedContentControl : HeaderedContentControl, который будет служить контейнером для каждого элемента в ListBox.В WPF доступ к контейнерам в 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 «s ItemsSource (или элемент в источнике пунктов удаляется). Как определить, когда очищается ItemsSource, чтобы я мог очистить список контейнеров?

+0

Есть ли способ доступа к внутренним контейнерам, созданным с помощью GetContainerForItemOverride() из класса DerivedListBox? Я бы предположил, что они управляются внутри класса, и доступ к этим объектам, а не управление моим собственным списком, будет идеальным. –

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^