WPF MVVM 选项列表示例

标签 wpf data-binding mvvm selection

我正在寻找一种轻松维护属于特定组的用户列表的方法。
我曾考虑过使用 Picklist,其中有 2 个列表框,第一个包含用户列表,第二个包含属于该组的用户列表。将有按钮允许从组中添加和删除选定的用户。添加用户时,它们会从左侧列表框向右移动,当用户被移除时,它们会从右侧移动到列表中。这是很常见的情况。

您知道在 WPF 中使用 MVVM 模式执行此操作的任何示例吗?

我很难理解绑定(bind)如何对我的 View 模型和业务实体起作用。尤其是将数据持久化回数据库。我正在使用存储过程调用来执行 CRUD 逻辑,因此我需要保留已删除用户的列表,以便我可以删除它们。

这是执行此功能的最佳方法还是有更好的方法。我只是想从列表中选择(列表可能很大)。

最佳答案

这应该很容易实现。在您的 View 模型中,创建两个可观察的集合属性,一个包含不在组中的用户,另一个包含在组中的用户。还为每个集合创建选定项属性。绑定(bind)项目控件'ItemsSourceSelectedItem这些属性的属性。然后执行从一个集合中删除所选项目并将其添加到另一个集合的命令,并将这些命令绑定(bind)到您的按钮。

跟踪哪些用户已被删除的最简单方法是不这样做。当需要更新数据库时,将 View 模型集合的内容与数据库中的内容进行比较。如果某个对象在您的“不在组中”集合中并且数据库认为它在组中,则将其删除。如果一个对象在您的“组内”集合中并且数据库认为它不在,请添加它。

关于WPF MVVM 选项列表示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2600038/

相关文章:

c# - 关闭窗口后出现 TaskCanceledException

c# - 将搜索和排序功能添加到数据绑定(bind)包装器

c# - MVVM 最佳实践 - 直接使用模型列表成员的引用或制作副本?

.net - 具有 MVVM 模式的 Wpf Prism 应用程序架构

c# - MarkupExtension 声明中的默认构造函数参数

wpf - 在 Prism v4 WPF 应用程序(区域)中打开第二个 shell

c# - WPF 在 EF 的实体值更改时自动绑定(bind)

c# - 是否可以将 TextBlock 的文本绑定(bind)到应用程序 AssemblyVersion?

数据绑定(bind)属性更新的 WPF 平滑过渡

c# - WinRT : ListView SelectedItem updating, 但未突出显示