MVVM - 处理需要在ViewModel表示的基础模型上执行的操作

时间:2014-03-26 18:28:42

标签: c# wpf mvvm

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

可以选择ListViewItemsPetViewModel个对象,然后可以购买Pet。我的问题是,处理这种情况的常用方法是什么,我们不希望购买PetViewModel,但它代表的是实际的宠物?

让我详细说明:我想购买一只宠物,因此我选择ListViewItemPetViewModel)并点击购买按钮。然后我想记录购买(在这种情况下通过Order对象),Order将存储在某种类型的数据库中,例如XML文件。将Pet模型作为PetViewModel的属性是好的/通常做法,然后我可以在保存这些对象时通过Pet访问PetViewModel模型到数据库?

创建订单的示例代码可能是:

Order o = new Order();
o.Customer = GetCurrentCustomer();
o.PurchasedPet = petViewModel.Pet;
SaveOrderToDatabase(o);

这是完全可以接受的MVVM还是有更好的方法来处理ViewModel所代表的底层模型的操作?

注意:这不是我的应用程序特有的。这是关于MVVM的一般问题。我使用我的应用程序作为一个具体的例子。

1 个答案:

答案 0 :(得分:1)

这真的取决于。

在您的方案中,听起来PetViewModel可能很容易在其上OrderCommandICommand),并处理订购本身的逻辑。这避免了需要将底层模型公开为公共属性,因为VM将直接处理所有这些“特定于应用程序”的逻辑。