Обновление наблюдаемой коллекции - PullRequest
2 голосов
/ 16 июня 2011

В настоящее время я работаю над приложением, использующим MVVM, которое должно отображать некоторые данные в выпадающих списках. Они связаны с ObservableCollections. Данные хранятся в базе данных.

У меня есть несколько объектов, таких как, например, имя и местоположение. Каждый выпадающий список содержит либо имя, либо местоположение. Рядом со списком имен стоит число, показывающее, как много людей называют это имя. Расположение делает подобное. Теперь, когда пользователь нажимает на имя, цифры в окне местоположения изменяются, чтобы показать, сколько людей с таким именем живет в этих местах. Объекты имени и местоположения полностью отделены и ничего не знают друг о друге. Если пользователь затем нажимает на местоположение, то это обновит имя комбобокса. Необработанные данные содержатся в столбце данных с именем и местоположением. (В финальном проекте будет приблизительно 7 комбинированных списков, и таблица данных будет соответственно увеличена). Является ли это случаем простого повторного запроса объекта данных, очистки и замены объектов в выпадающем списке новыми данными?

Извините за длинное сообщение.

Ответы [ 2 ]

0 голосов
/ 17 июня 2011

В случае полного изменения списков, ObservableCollection мало чем вам поможет. Возможно, вам будет проще иметь комбинированные поля со ItemsSource для свойств в ViewModel, которые возвращают IEnumerable<T> и вызывают PropertyChanged, когда выбран конкретный элемент (установлено SelectedItem).

0 голосов
/ 16 июня 2011

Вам придется синхронизировать любую наблюдаемую коллекцию, которую вы создаете, с DataTable вручную.Обновление DataTable само по себе не приведет к обновлению коллекции ObservableCollection.

Однако вы можете напрямую связываться с .DefaultView объекта DataTable - это действует как коллекция привязок, которая обновляет представление при изменении данных в вашем DataTable.

Вы также можете рассмотреть возможность использования Выражений с DataTable для выполнения небольших запросов / фильтрации для облегчения вашей жизни.

...