나는 이것에 너무 많은 시간을 할애하여 실수를 발견 할 수 없다. 어쩌면 나는 아주 명백한 것을 놓치고 있거나 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에 대해 잊지 막 해요 그리고 윈폼에 다만
인사 다니엘
안녕 줄리앙 :
코드는 다음과 같을 것이다. tipp, 주셔서 감사하지만 출력 창에서 모든 데이터 바인딩 오류를 찾을 수 없습니다. 그것은 매우 충격적입니다. 목록은 결국로드되므로 업데이트를 구독하지 않습니다. 필터링에 대해 살펴 보겠습니다. 감사! – Tigraine