Исключение WPF ObservableCollection и Listbox.itemsource

Редактирование всего этого поста, чтобы уточнить... Я не могу прибить это:

BackgroundWorker получает данные от службы WCF, которая представляет собой список объектов. Ссылка на службу настроена как ObservableCollection.

Я передаю ObservableCollection через делегата в мой основной поток пользовательского интерфейса и устанавливаю его равным потокам пользовательского интерфейса Local Collection.

Список привязан к этой локальной коллекции и не обновляется. Я добавил следующее в свою коллекцию:

public ObservableCollection<EmployeeData> _empData { get; set; }

public event PropertyChangedEventHandler PropertyChanged;

public ObservableCollection<EmployeeData> EmpData
    {
        get { return _empData ; }
        set
        {
            _empData = value;
            OnPropertyChanged("EmpData");
        }
    }

private void OnPropertyChanged(string p)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
            handler(this, new PropertyChangedEventArgs(p));
    }

Это даже срабатывает, но PropertyChanged всегда имеет значение null. Мой список XAML имеет привязку, объявленную как:

ItemsSource="{Binding Path=EmpData}"

Независимо от того, что я делаю, EmpData обновляет, но ListBox не делает, я пробовал несколько других методов, но в списке ничего не меняется, он всегда просто нулевой.

Я работаю над этим уже более суток, и я не могу заставить все это автоматическое обновление "щелкнуть".

1 ответ

Я не уверен, что я точно понимаю, что вы делаете, но вот пара предложений.

  • Иметь одну коллекцию ObservableCollection
  • Свяжите свою коллекцию предметов (или список, или что-то еще) с этим
  • В зависимости от пользователя очистите и заполните эту наблюдаемую коллекцию данными списка
  • Пусть фоновый работник обновит список и обновит наблюдаемую коллекцию, если что-то изменилось.

В идеале ваш класс EmployeeData будет реализовывать интерфейс INotifyPropertyChanged, чтобы изменения свойств автоматически обновлялись в вашем представлении.

Другие вопросы по тегам