2009-10-30 2 views
1

각 관리에 대해 관리 개체 및 콤보 상자 목록을 표시하려는이 상황이 있습니다. 이 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

나는 당신에게 무엇을 정확하게하는 방법을 몰라,하지만 난 다른 접근 방식을 제안 할 수 있습니다 : 당신의 관리 클래스에 대한 확장 메서드를 만듭니다. 이 메서드는 필터링 된 컬렉션 뷰를 만들고 반환합니다. 그런 다음 메서드의 결과에 바인딩 할 수 있습니다.

+0

Antonmarkov, 을하는 데 도움이 ...

희망 등 데이터 그리드, 목록 상자, 콤보 상자를 필터링 할 수 있습니다 이 같은 뜻 : (의사 코드) 공용 클래스 관리를 { 공공 CollectionViewSource CollectionViewSource { get; 개인 집합; } 공공 관리() { CollectionViewSource = new CollectionViewSource(); CollectionViewSource.Filter + = EmployeeAdministrationFilter; } 개인 무효 EmployeeAdministrationFilter (개체를 보낸 사람, FilterEventArgs 전자) { // 필터 물건 //이 관리 } 에게} = – Frederik

+0

당신이 관리를 수정할 수있는 경우 예, 당신은 단지 속성을 직접 추가 할 수 있습니다. CollectionViewSource 대신 일반 CollectionView를 사용해야합니다. CollectionViewSource는 XAML에서 사용되는 태그 확장입니다. – Anton

관련 문제