【发布时间】:2009-10-30 22:27:12
【问题描述】:
我有这种情况,我想显示管理对象列表和每个管理的ComboBox。在这个ComboBox 中,我想要一个包含属于这个管理部门的员工的列表,以及一个空选项。所以我需要根据 Administration 进行过滤。
到目前为止,我已经想出了以下代码(注意:对象名称已被翻译)
<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?
}
【问题讨论】:
标签: c# .net wpf data-binding