gpt4 book ai didi

.net - 我应该如何访问 ViewModel 的底层实体/模型

转载 作者:行者123 更新时间:2023-12-03 01:01:00 25 4
gpt4 key购买 nike

我们正在设计一个 WPF/MVVM 应用程序,允许用户搜索和操作联系人记录。

我们有一个 MainViewModel,其中包含可观察的 ContactViewModel 对象集合,每个对象都包装从业务层返回的联系人实体。 UI 将这些内容显示在列表中,并将 SelectedItem 属性绑定(bind)到 MainViewModel 上相应的 SelectedContact 属性。

我们还将有一个按钮或其他东西,其中命令绑定(bind)到 MainViewModel 公开的“ProcessContact”ICommand。

ProcessContact 需要获取选定的联系人并对其执行某些操作,具体执行什么操作并不重要。

我的问题是:获取由所选 ContactViewModel 包装的底层 Contact 对象的正确方法是什么?我可以在 View 模型上公开一个 Contact 属性,但这意味着 View 可能直接绑定(bind)到模型之外的属性。

我发现自己经常传递 ViewModel 实例,当我真正想要的是它所包装的实体时,这感觉不对。

我是否遗漏了一些明显的东西?

编辑:同事提出的一些建议:

  • 将实体公开为 ViewModel 上的 protected 属性,这将停止与其绑定(bind)的 View (假设 View 类位于单独的程序集中)

  • 停止尝试完全访问模型。如果我们想以某种方式处理底层实体,我们可以调用 ViewModel 上的方法。在我的示例中,我们可能有一个 ContactViewModel 之外的 .Process 方法。 ('SelectedContact.Process()')

对我来说,第二个选项感觉是一个更好的解决方案,但不确定我们是否应该将那么多逻辑放入 ViewModel 中(但如果不存在,那么在哪里?)

最佳答案

你的第二个建议对我来说似乎更正确。我通常将数据包装在 View 模型中,无论如何,它就像 Controller 一样......它应该通过用户在 View 中的操作来控制数据发生的情况。因此,我会包装您的数据,然后将适当的行为附加到您的 View 模型。我不知道为什么您会担心向 View 模型添加太多逻辑,这就是它的工作!

关于.net - 我应该如何访问 ViewModel 的底层实体/模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3669679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com