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

标签 c# wpf mvvm

我正在创建一个小型应用程序,它或多或少是 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/

相关文章:

c# - 如何在 C# .NET 核心控制台程序中指定 AWS 凭据

屏幕从 sleep 中唤醒后,WPF 应用程序窗口未完全刷新

wpf - MVVM-如何绑定(bind)到不是 DependancyProperty 的属性?

c# - 在 prsim 模型中使用 ValueConverter

silverlight - MVVM 问题 - 仅绑定(bind)某些值

c# - 使用 <CustomErrors 模式 ="On"/> 在 UpdatePanel 中处理错误

c# - 如何拦截C#中的方法调用

c# - Resharper - 调试静态方法

wpf - 如何在 WPF 中的 StackPanel 的 MouseEnter 上执行命令绑定(bind)?

c# - 单击 WPF 中的按钮显示用户控件 (WPF) 查看页面