c# - 使用 MVVM 时我应该在哪个类中加载数据

标签 c# wpf mvvm model xls

目前正在学习C#,最近学习了WPF的MVVM设计模式。我正在编写一个简单的程序来练习这个,但我不确定应该在哪里编写加载数据的方法。

我有一个 SalesSheet 类,如下所示。这包含我从 .xls 文件加载的数据。

class SalesSheet
{
    public List<Row> Rows { get; set; }

    public SalesSheet()
    {
        Rows = new List<Row>();
    }

    public class Row
    {
        public string CallType { get; set; }
        public string HistoryText { get; set; }
    }

}

我的问题是,加载数据的方法应该写在哪里呢?编写如下方法是不好的做法吗:

private void LoadData(string filePath)

在模型中,并将其称为构造函数?

我应该从 ViewModel 加载它吗?

最佳答案

一般来说,一个小的WPF项目应该有如下大概的文件夹结构:

  • 项目名称
    • 转化者
    • 数据访问
    • 数据类型
    • 图片
    • View 模型
    • 浏览量

DataAccess 是您应该存储数据访问类的文件夹。将应用程序的各个方面分开是一种很好的做法; View 、 View 模型和数据访问类。这被称为关注点分离,是一种很好的做法,因为(除其他外)它使您能够切换图层...这意味着您可以稍后添加一个网络接口(interface)(或更改您的数据库),同时仍然保持大部分代码相同,并且它还使测试您的代码更容易。

此文件夹中可能只有一个类,我们称它为DataProvider。在这个 DataProvider 类中,您放置了所有 数据访问方法。您现在有一个数据访问入口点,您可以在基本 View 模型中添加对它的引用:

protected DataProvider DataProvider
{
    get { return new DataProvider(); }
}

现在您的 View 模型都可以访问项目数据源,然后您可以执行以下操作:

SomeObject someObject = DataProvider.LoadData(filePath);

当然,有许多不同的方法可以实现此模式,但希望现在您已经明白了。

关于c# - 使用 MVVM 时我应该在哪个类中加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22514584/

相关文章:

c# - 如何在ItemsControl中隐藏最后一个子控件

c# - 绑定(bind)到Model或ViewModel

c# - 任何库将数字拼音转换为带声调标记的拼音?

c# - 阿尔卡特 4400 PABX 与 C# 的连接

c# - 在参数化查询中插入多个条目

c# - WPF:在代码隐藏中引用应用程序范围的资源

wpf - 如何检测 WPF DataGrid 行数据已更改?

c# - 在哪里设置自定义控件默认值

wpf - System.Windows.Input 对 C++/CLI 不可用?

c# - 将 ViewModel 引用传递给另一个 ViewModel(绑定(bind)到 View 的同一引用)?