У меня есть ситуация, когда я хочу отобразить список объектов администрирования и поле со списком для каждого администрирования. Внутри этого поля со списком я хочу список сотрудников, принадлежащих к этой администрации, вместе с пустым параметром. Поэтому мне нужно фильтровать на основе администрирования.
До сих пор я придумал следующий код (примечание: имена объектов были переведены)
<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 с прикрепленным событием Filter. Но я должен как-то передать текущее администрирование в цикле ItemsControl этому событию. В привязке данных это преобразуется в {Binding Path =.} Внутри ItemsControl. Объект отправителя - мой CollectionViewSource, но он не предоставляет полезных данных.
Примерно так:
private void EmployeeAdministrationFilter( object sender, FilterEventArgs e )
{
Employee employee = ( Employee )e.Item;
Administration administration; // how do I pass the administration to this filter?
}