C# 使用ItemsControl组合框进行动态筛选

C# 使用ItemsControl组合框进行动态筛选,c#,.net,wpf,data-binding,C#,.net,Wpf,Data Binding,在这种情况下,我希望为每个管理显示一个管理对象列表和一个组合框。在这个组合框中我想要一个属于该管理层的员工列表,以及一个空选项。所以我需要根据管理进行筛选 到目前为止,我已经提出了以下代码(注意:对象名称已经翻译) 我不知道如何准确地完成您的要求,但我可以建议另一种方法:为您的管理类创建一个扩展方法。此方法创建一个筛选的集合视图并返回它。然后,您可以绑定到该方法的结果。您可能需要尝试: 这是一个通用、动态、完整的XAML声明性itemscontrol筛选器用户控件。它可以过滤数据网格、列表框、组

在这种情况下,我希望为每个管理显示一个管理对象列表和一个组合框。在这个
组合框中
我想要一个属于该管理层的员工列表,以及一个空选项。所以我需要根据管理进行筛选

到目前为止,我已经提出了以下代码(注意:对象名称已经翻译)


我不知道如何准确地完成您的要求,但我可以建议另一种方法:为您的管理类创建一个扩展方法。此方法创建一个筛选的集合视图并返回它。然后,您可以绑定到该方法的结果。

您可能需要尝试:

这是一个通用、动态、完整的XAML声明性itemscontrol筛选器用户控件。它可以过滤数据网格、列表框、组合框等


希望这有帮助,你的意思是:(伪代码)公共类管理{public CollectionViewSource CollectionViewSource{get;private set;}公共管理(){CollectionViewSource=new CollectionViewSource();CollectionViewSource.Filter+=EmployeeAdministrationFilter;}private void EmployeeAdministrationFilter(对象发送方,FilterEventTargets e){//Filter stuff//this=Administration}}是的,如果可以修改管理,则可以直接添加属性。不过,您可能应该使用普通的CollectionView而不是CollectionViewSource。CollectionViewSource是用于XAML的标记扩展。
<ItemsControl x:Name="listAdministrations" ItemsSource="{Binding Path=AllAdministrations}" Margin="0,0,0,6">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Vertical" >
                <TextBox Content="{Binding Path=AdministrationName}" />

                <StackPanel Orientation="Horizontal" Margin="14,0,0,0">
                    <Label>Declares under:</Label>
                    <ComboBox DisplayMemberPath="DisplayFullName">
                        <ComboBox.ItemsSource>
                            <CompositeCollection>
                                <!-- empty option -->
                                <model:Employee DisplayFullName="-" />
                                <CollectionContainer Collection="{Binding Source={StaticResource employeeCV}}"/>
                            </CompositeCollection>
                        </ComboBox.ItemsSource>
                    </ComboBox>
                </StackPanel>
            </StackPanel>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
private void EmployeeAdministrationFilter( object sender, FilterEventArgs e )
    {
        Employee employee = ( Employee )e.Item;
        Administration administration; // how do I pass the administration to this filter?
}