2010-05-23 3 views
1

나는 이것에 너무 많은 시간을 할애하여 실수를 발견 할 수 없다. 어쩌면 나는 아주 명백한 것을 놓치고 있거나 WPF 요소 호스트 Winforms에서 버그를 발견했을 수도 있습니다.Winforms의 WPF 호스트에서 데이터 바인딩이있는 버그?

ListView를 내 ProductListViewModel에있는 ObeservableList에 바인딩하고 있습니다.

필자는 ObservableList를 필터링 된 새 목록으로 변경하기 위해 일반 Idea로 ListView를 검색하도록 구현하려고합니다.

어쨌든, ListView에 바인딩 코드는 다음과 같습니다

<ListView ItemsSource="{Binding Path=Products}" SelectedItem="{Binding Path=SelectedItem}" SelectionMode="Single"> 
    <ListView.ItemContainerStyle> 
     <Style TargetType="{x:Type ListViewItem}"> 
      <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"></Setter> 
     </Style> 
    </ListView.ItemContainerStyle> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Name}"></TextBlock> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

을 그리고 뷰 모델의 코드는 얻을 수 바닐라과 같습니다

private ObservableCollection<ProductViewModel> products; 
public ObservableCollection<ProductViewModel> Products 
{ 
    get { return products; } 
    private set 
    { 
     if (products != value) 
     { 
      products = value; 
      OnPropertyChanged("Products"); 
     } 
    } 
} 
이제

문제는 여기에 : 나는으로 디버깅하면 내 OnPropertyChanged 메서드를 사용하면 PropertyChanged 이벤트에 대한 구독자가 없다는 것을 알 수 있습니다 (null 임). UI에서 아무 일도 일어나지 않습니다. 이미 Mode = TwoWay 및 다른 바인딩 모드를 시도했는데 ListView를 가져올 수없는 것으로 보입니다. ItemsSource에 가입하십시오 ...

아무도 도와 줄 수 있습니까? 나는 ElemenHost에 대해 잊지 막 해요 그리고 윈폼에 다만

인사 다니엘

답변

1

출력 창에 모든 바인딩 오류가 있습니까?

그런데 전체 컬렉션을 바꾸는 대신 컬렉션보기에서 제품을 줄 바꿈 한 다음보기를 필터링하는 것이 좋습니다.

var collectionView = CollectionViewSource.GetDefaultView(Products); 
collectionView.Filter += item => ...; 
+0

안녕 줄리앙 :

코드는 다음과 같을 것이다. tipp, 주셔서 감사하지만 출력 창에서 모든 데이터 바인딩 오류를 찾을 수 없습니다. 그것은 매우 충격적입니다. 목록은 결국로드되므로 업데이트를 구독하지 않습니다. 필터링에 대해 살펴 보겠습니다. 감사! – Tigraine

관련 문제