我正在创建一个小型应用程序,它或多或少是 MVVM 的个人培训应用程序。在我的应用程序中,我有一个 ListView
谁的ItemsSource
属性绑定(bind)到 ObservableCollection<PetViewModel>
.每个PetViewModel
代表实际的 Pet
模型/对象。
ListViewItems
, 这是 PetViewModel
对象,可以选择,然后 Pet
可以购买。我的问题是,处理这种我们不想要 PetViewModel
的情况的常用方法是什么?要购买,但它代表的实际宠物?
让我详细说明一下:我想购买一只宠物,所以我选择了 ListViewItem
( PetViewModel
) 并单击“购买”按钮。然后我想记录购买(在本例中通过 Order
对象),以及 Order
将存储在某种类型的数据库中,例如 XML 文件。拥有 Pet
是好的/常见的做法吗?模型是 PetViewModel
的属性,然后我就可以访问 Pet
通过模型 PetViewModel
将这些对象保存到数据库时?
创建订单的示例代码可能是:
Order o = new Order();
o.Customer = GetCurrentCustomer();
o.PurchasedPet = petViewModel.Pet;
SaveOrderToDatabase(o);
这是完全可以接受的 MVVM 还是有更好的方法来处理对 ViewModel 表示的底层模型的操作?
注意:这不是特定于我的应用程序。这是关于 MVVM 的一般性问题。我以我的应用程序为例。
最佳答案
这真的取决于。
在你的场景中,听起来你的 PetViewModel
可以很容易地在上面有一个 OrderCommand
(ICommand
),并处理自己下单。这避免了将底层模型公开为公共(public)属性的需要,因为 VM 将直接处理所有这些“特定于应用程序”的逻辑。
关于c# - MVVM - 处理需要在 ViewModel 表示的基础模型上执行的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22669960/