假设我有一个WPF / MVVM应用程序来管理一些假设的客户:)。
域模型包含名为Customer的实体(在代码中表示为POCO)。
主屏幕包含一个网格,绑定到一个视图模型(CustomersViewModel),该模型从Repository<顾客>
主屏幕还允许创建新客户(并将其保存到数据库)。
假设我需要实现“添加客户”用例。最明显的方法如下:
就个人而言,我不喜欢这种“快速而肮脏”的方式(因为每次添加新客户时都需要从DB重新加载完整的客户列表。)
任何人都可以提出更好的方法(不需要从数据库刷新客户列表)???我觉得必须有一些最佳实践来处理这样的场景:))。
提前致谢!
答案 0 :(得分:0)
如果保存Customer
成功,为什么不能只将单个Customer
实例添加到您的客户群中?除非用户明确刷新视图(通常通过刷新按钮),否则无需重新加载所有客户。
答案 1 :(得分:0)
如果您通过绑定(到客户列表)在视图中加载列表,您只需将新客户添加到该列表中,所有内容都是alredy; - )
答案 2 :(得分:0)
我有一个类似的应用程序,在UI中创建对象。我通过在VM中添加对象然后单击“保存”按钮将其与“模型”同步来解决此问题。
我假设您在CustomersViewModel中有一个CustomerViewModel列表,网格视图绑定到该列表。您可以将新的CustomerViewModel对象添加到CustomersViewModel中的列表中。在将ViewModel数据保存回模型时,模型与VM同步。除非您的应用程序之外的其他人正在更改模型数据,否则无需从模型中刷新VM。
答案 3 :(得分:0)
您可以创建一个ObservableCollection<Customer>
并将其填入您希望在视图中显示的数据库中的客户。添加新客户时,将其添加到此集合中,并将其保存到数据库中。 CustomersView
绑定ObservableCollection并自动更新,无需刷新数据库中的数据。
WPF Application Framework (WAF) 的 BookLibrary 示例应用程序展示了如何做到这一点。