0

我正在创建 aDerivedListBox : ListBox和 a DerivedHeaderedContentControl : HeaderedContentControl,它们将作为ListBox.

为了计算DerivedHeaderedContentControls 的扩展内容可用的大小,我将每个容器对象存储在DerivedListBox. 这样我可以计算每个标题的高度,DerivedHeaderedContentControl然后从可用的总大小中减去DerivedListBox. 这将是可用于 a 的扩展内容的大小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'sItemsSource被清除(或项目源中的项目被删除)时,问题就出现了。如何确定何时ItemsSource清除,以便我可以清除容器列表?

4

1 回答 1

0

对于这种特殊情况,您可能应该使用ItemsContainerGenerator.ItemsChangedevent.

于 2009-10-26T23:55:17.487 回答