【问题标题】:Does usage of a model makes sense in this sample MVVM application?在这个示例 MVVM 应用程序中使用模型是否有意义?
【发布时间】:2012-12-25 21:04:23
【问题描述】:

我需要编写一个使用 MVVM 模式和 WPF 的小工具。基本上这个工具应该执行以下任务:

  • 从 GUI 获取用户名和密码。
  • 使用外部 CSV 文件中的数据读取行。
  • 使用从 CSV 读取的数据对外部 Web 服务执行 SOAP 调用。

在上述过程中使用了以下数据(所有字符串):

  • 从 GUI 读取的数据
    • 用户名
    • 密码
  • 从 CSV 读取的数据
    • 身份证
    • 说明

CSV 文件中的数据也不会显示在 GUI 中,应用程序也不会将任何数据存储在文件、数据库等中。它只是一个“连接器”。现在,模型中应该包含什么?还是在这种情况下我需要一个?

class MyData {
  private string id;
  private string description;

  public string Id {
    get { return id; }
    set { id = value; }
  }

  public string Description {
    get { return description; }
    set { description= value; }
  }
}

注意:
这个问题和我之前的问题有关:What is the model in MVVM for?

【问题讨论】:

    标签: c# mvvm model viewmodel


    【解决方案1】:

    该模型由用于将数据表示为对象的 POCO 以及检索数据的逻辑组成。

    视图模型负责保存特定于其用途的数据子集。

    这意味着,从 CSV 读取是在模型中完成的(ViewModel 甚至不应该知道其中涉及 CSV),并且读取的数据也应该存储到模型中定义的对象 (POCO) 中。

    然后视图模型可以从模型中获取他们需要的任何数据子集。

    如果应用需要持久性,视图模型会将修改后的 POCO 推送回模型,然后由模型负责更新 CSV。

    【讨论】:

    • 示例:这意味着如果我有一个包含数千行的 CSV,我需要在包含所有这些数据的模型中创建一个 POCO(数组、列表……)?那么视图模型处理这个 POCO 呢?
    • @RobertStrauch 没错。我应该补充一点,POCO 可以实现 INotifyPropertyChanged。
    猜你喜欢
    • 2020-12-17
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 2022-11-30
    • 1970-01-01
    • 2019-03-20
    • 2011-03-17
    相关资源
    最近更新 更多