在WPF中,访问ListBox中的容器

时间:2009-10-26 23:48:23

标签: c# wpf listbox itemssource

我正在创建DerivedListBox : ListBoxDerivedHeaderedContentControl : 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的{​​{1}}被清除(或项目来源中的项目被删除)时会出现问题。如何确定何时清除ItemsSource以便清除容器列表?

1 个答案:

答案 0 :(得分:0)

对于这种特定情况,您应该使用ItemsContainerGenerator.ItemsChanged事件。