我正在创建一个小型应用程序,该应用程序或多或少是MVVM的个人培训应用程序。在我的应用程序中,我有一个ListView,其ItemsSource属性绑定(bind)到ObservableCollection<PetViewModel>。每个PetViewModel代表实际的Pet模型/对象。

可以选择作为ListViewItems对象的PetViewModel,然后可以购买Pet。我的问题是,处理这种情况的通常方法是什么,我们不希望购买PetViewModel,但要购买的是实际的Pet?

让我详细说明一下:我想购买一只宠物,所以我选择一个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/

10-12 04:04