【发布时间】:2012-05-28 17:05:48
【问题描述】:
我使用 C#、WPF 并尝试使用 MVVM。所以我有一个 MyObjects 的 ObservableCollection。该列表呈现到 DataGrid 中,MyObject 的一个属性是项目的静态列表,显示在每行的 ComboBoxes 中。
现在我想在此组合框中的一行中选择一个项目,如果之前在另一行中选择了它,则必须将最后一个选择删除为默认值。我该如何管理?我的 MyObjectViewModel 知道它自己的组合框的变化,但它如何告诉 MainViewModel(它持有 MyObjects 的 ObservableCollection)从另一个 MyObject 对象更改最后选择的 ComboBox 项?
【问题讨论】:
-
你说列表是静态的,对吧?那么你不应该只删除选定的项目,它会自动更新所有行吗?
-
我不希望它从列表中删除;如果之前有另一个 ComboBox 被此项目选中,则必须删除这个 ComboBox 选择。
-
为什么不为所有项目“AllItems”使用一个列表,一个用于选定项目“SeledtedItems”,第三个用于可用项目“AvailableItems”,后者是“ AllItems”减去“SelectedItems”。此列表是您绑定到 ComboBox 的 ItemsSource 的列表。每当“SelectedItems”更改时,也会在“AvailableItems”上触发 NotifyPropertyChanged。
-
@SvenG 但如果它绑定到“AvailableItems”,则会从每行的 ComboBox 中删除所选项目。我认为 Op 是说如果选择了一个项目,它应该保留在该行中。
-
@SvenG 也许如果您在每一行中有第三个属性——“SelectedItem”——并将其添加到“AvailableItems”的绑定中?
标签: c# wpf mvvm combobox observablecollection