Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF中,访问列表框中的容器_C#_Wpf_Listbox_Itemssource - Fatal编程技术网

C# 在WPF中,访问列表框中的容器

C# 在WPF中,访问列表框中的容器,c#,wpf,listbox,itemssource,C#,Wpf,Listbox,Itemssource,我正在创建一个DerivedListBox:ListBox和一个DerivedHeaderedContentControl:HeaderedContentControl,它将用作ListBox中每个项目的容器 为了计算DerivedHeaderedContentControl扩展内容的可用大小,我将每个容器对象存储在DerivedListBox内的列表中。通过这种方式,我可以计算每个DerivedHeaderedContentControl的标题高度,并从DerivedListBox可用的总大小

我正在创建一个DerivedListBox:ListBox和一个DerivedHeaderedContentControl:HeaderedContentControl,它将用作ListBox中每个项目的容器

为了计算DerivedHeaderedContentControl扩展内容的可用大小,我将每个容器对象存储在DerivedListBox内的列表中。通过这种方式,我可以计算每个DerivedHeaderedContentControl的标题高度,并从DerivedListBox可用的总大小中减去该高度。这将是衍生HeaderedContentControl的扩展内容可用的大小


当DerivedListBox的ItemsSource被清除或items源中的某个项被删除时,就会出现问题。如何确定何时清除ItemsSource以便清除容器列表?

对于此特定场景,您可能应该使用event。

是否可以从DerivedListBox类中访问通过GetContainerForItemOverride创建的内部容器?我假设它们是在类中管理的,最好是能够访问这些对象,而不是管理我自己的列表。
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.
}