有一个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?
}
答
我不知道怎么给你问到底是什么做的,但我可以建议另一种方法:创建您的管理类的扩展方法。此方法创建过滤的集合视图并将其返回。然后您可以绑定到该方法的结果。
答
这是一个通用的,动态的,完整的XAML声明ItemsControl的过滤器的用户控制。它可以过滤数据网格,列表框,组合框,等...
希望这有助于
Antonmarkov, 你的意思是这样的:(伪代码) 公共类管理 { 公共CollectionViewSource CollectionViewSource { 搞定; 私人设置; } 公共管理局() { CollectionViewSource =新CollectionViewSource(); CollectionViewSource.Filter + = EmployeeAdministrationFilter; } 私人无效EmployeeAdministrationFilter(对象发件人,FilterEventArgs E) {// 过滤的东西 //此=管理 }} 是 – Frederik 2009-10-31 10:15:56
,如果你可以修改管理,那么你可以直接添加属性。尽管你应该使用一个普通的CollectionView来代替CollectionViewSource。 CollectionViewSource是用于XAML的标记扩展。 – Anton 2009-10-31 18:45:10