Мне нужно составить список предметов. Я привязал коллекцию пользователей к списку. Все работает хорошо, но элементы в списке не обновляются в режиме реального времени. Они не обновляются вообще с помощью этой привязки. Поэтому, когда я удаляю любого пользователя из списка, список не обновляется, даже если его источник правильно изменен.ItemsSource привязка не обновляет значения
Источник находится в модели просмотра данных по пути DataViewModel.Instance.AllUsers; Всякий раз, когда я добавляю в этот список новый элемент или удаляю его, макет не обновляется. Другие крепления хорошо работают. Я попытался обновить макет списка, повысить событие исходного обновления, другой способ добавления/удаления элементов, но ничего не получилось.
Я пытался отлаживать привязку, но у меня слишком много привязок, чтобы найти ошибку.
Заранее благодарим за полезные советы.
Listbox:
<ListBox x:Name="ListboxUsers" ItemsSource="{Binding Path=AllUsers, Mode=OneWay}" Grid.Column="1" Margin="0" Grid.Row="5" Background="DimGray" BorderThickness="0" Visibility="Hidden" SelectionChanged="ListboxUsers_SelectionChanged"/>
Code-за:
CatalogueGrid.DataContext = DataViewModel.Instance; //whole view model added as datacontext
DataViewModel класс:
public class DataViewModel : INotifyPropertyChanged
{
private static DataViewModel _dataViewModel;
private Collection<UserModel> allUsers;
public Collection<UserModel> AllUsers
{
get
{
return allUsers;
}
set
{
allUsers = value;
NotifyPropertyChanged("AllUsers");
}
}
private DataViewModel()
{
AllUsers = new Collection<UserModel>();
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string info)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(info));
}
}
.
.
.
}
Правильный ответ, неправильное объяснение. Он реализует 'INotifyCollectionChanged', который заставляет обновления работать. Он * также * реализует 'INotifyPropertyChanged', но это не так важно. – BradleyDotNET
thx ответить обновлен – Usama
Еще одна ничтожная вещь, ее не просто «по умолчанию». «ObservableCollection» реализует интерфейс. Период. Невозможно сделать это * не * реализовать интерфейс. – BradleyDotNET