我目前正在开发一个使用MVVM的应用程序,需要在组合框中显示一些数据。这些绑定到ObservableCollections。数据存储在数据表中。
我有许多对象,例如名称和位置。每个组合框包含名称或位置。名称列表旁边有一个数字,显示有多少人被称为该名称。位置类似。现在,当用户点击名称时,位置框中的数字会发生变化,以显示该名称中有多少人居住在这些位置。名称和位置对象是完全独立的,彼此一无所知。如果用户然后单击某个位置,则会更新名称组合框。原始数据包含在具有名称和位置列的数据表中。 (最终项目中将有大约7个组合框,数据表将相应增加)。是仅仅再次查询数据表并使用新数据清除和替换组合框中的对象的情况?
对不起长篇大论的消息感到抱歉。
答案 0 :(得分:0)
您必须手动同步您使用DataTable创建的任何可观察集合。单独更新DataTable不会在ObservableCollection上产生更新。
但是,您可以直接绑定到DataTable的.DefaultView - 它充当一个绑定集合,当DataTable中的数据发生更改时,它会更新View。
您还可以考虑将Expressions与DataTable一起使用,以执行小型查询/过滤,让您的生活更轻松。
答案 1 :(得分:0)
如果列表完全更改,ObservableCollection
对您没什么帮助。您可能会发现组合框对ViewModel上的属性ItemsSource
更容易返回IEnumerable<T>
,并在选择特定项目框时调用PropertyChanged
(SelectedItem
是设定)。