Я провел слишком много времени с этим и не могу найти ошибку. Возможно, я упускаю что-то очень очевидное или, возможно, я только что нашел ошибку в хосте элементов WPF для Winforms.
Я связываю ListView с ObeservableList, который находится в моем ProductListViewModel.
Я пытаюсь реализовать поиск ListView с общей идеей, чтобы просто изменить ObservableList с новым списком, который фильтруется.
В любом случае код привязки 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>
И код ViewModel настолько ванильный, насколько он может получить:
private ObservableCollection<ProductViewModel> products;
public ObservableCollection<ProductViewModel> Products
{
get { return products; }
private set
{
if (products != value)
{
products = value;
OnPropertyChanged("Products");
}
}
}
Теперь проблема здесь: после отладки в моем методе OnPropertyChanged я вижу, что нет подписчиков на событие PropertyChanged (оно нулевое), поэтому в пользовательском интерфейсе ничего не происходит ..
Я уже пробовал Mode = TwoWay и другие режимы Binding, похоже, я не могу заставить ListView подписаться на ItemsSource ...
Может кто-нибудь помочь мне с этим? Я просто собираюсь забыть о ElemenHost и просто сделать это в Winforms
привет Даниил