有一个ItemsControl组合框

有一个ItemsControl组合框

问题描述:

动态过滤我有这样的情况下,我想显示管理对象的列表,并为每个管理组合框。在这个ComboBox中,我想要一个属于这个管理员的员工列表,以及一个空的选项。所以我需要根据管理进行过滤。有一个ItemsControl组合框

到目前为止,我想出了下面的代码(注意:对象名称已被翻译)

<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> 

的静态资源employeeCV是安装一个过滤器事件CollectionViewSource。但我必须以某种方式将ItemsControl循环中的当前管理传递给此事件。在数据绑定中,这转换为ItemsControl中的{Binding Path =。}。发件人对象是我的CollectionViewSource,但它没有提供有用的数据。

事情是这样的:

private void EmployeeAdministrationFilter(object sender, FilterEventArgs e) 
    { 
     Employee employee = (Employee)e.Item; 
     Administration administration; // how do I pass the administration to this filter? 
} 

我不知道怎么给你问到底是什么做的,但我可以建议另一种方法:创建您的管理类的扩展方法。此方法创建过滤的集合视图并将其返回。然后您可以绑定到该方法的结果。

+0

Antonmarkov, 你的意思是这样的:(伪代码) 公共类管理 { 公共CollectionViewSource CollectionViewSource { 搞定; 私人设置; } 公共管理局() { CollectionViewSource =新CollectionViewSource(); CollectionViewSource.Filter + = EmployeeAdministrationFilter; } 私人无效EmployeeAdministrationFilter(对象发件人,FilterEventArgs E) {// 过滤的东西 //此=管理 }} 是 – Frederik 2009-10-31 10:15:56

+0

,如果你可以修改管理,那么你可以直接添加属性。尽管你应该使用一个普通的CollectionView来代替CollectionViewSource。 CollectionViewSource是用于XAML的标记扩展。 – Anton 2009-10-31 18:45:10

你可能想尝试的是:http://dotnetexplorer.blog.com/2011/04/07/wpf-itemscontrol-generic-staticreal-time-filter-custom-control-presentation/

这是一个通用的,动态的,完整的XAML声明ItemsControl的过滤器的用户控制。它可以过滤数据网格,列表框,组合框,等...

希望这有助于