首页 > 解决方案 > WPF MVVM 和数据访问层组织

问题描述

我已经开发了我的第一个 WPF 应用程序 (tryingt) 来使用 MVVM。我仍在学习,希望能回答以下问题:

  1. 我应该将 TestReportItem 类保留在 Repository 类库中还是将其移动到它自己的类库中?

  2. 我的 ViewModel 没有引用模型。它引用类TestReportItem。我使用 XAML 和数据模板显示 TestReportItem 以访问字符串字段“标题”。这是可接受的/最佳实践吗?

在此处输入图像描述

测试报告项

public class TestReportItem
{
    public string Title { get; set; } = string.Empty;
    public string SubTitle { get; set; } = string.Empty;
    public bool HasTable { get; set; }
    public string Reference { get; set; } = string.Empty;
    public bool HasAdditionalInformation { get; set; }
}

测试报告项目存储库

public interface ITestReportItemRepository
{
    List<TestReportItem> GetAllTestReportItems();
    TestReportItem GetByName(string testName);
}

XMLTestReportItemRepository

public class XMLTestReportTestStandardRepository : ITestReportItemRepository
    {
        private string _filePath;

        public string FilePath
        {
            get { return _filePath; }
            set { _filePath = value; }
        }

        public XMLTestReportTestStandardRepository(string sourceFilePath)
        {
            FilePath = sourceFilePath;
        }
        public TestReportItem GetByName(string testName)
        { ... }

        public List<TestReportItem> GetAllTestReportItems()
        { ... }

标签: c#wpfmvvmdata-binding

解决方案


MVVM 是经验法则而不是教条;意味着它非常灵活。最初 MVVM 是基于三层数据组织系统。视图/业务层/数据库层。从某种意义上说,就是这样。

我应该将 TestReportItem 类保留在 Repository 类库中还是将其移动到它自己的类库中?

您的类是驻留在主项目中还是在外部类库中取决于设计。如果设计要求在不同项目之间重用,那么可以提取它。否则,除了工作分离之外,作为外部人员不会增加任何价值。

请记住,外部库在某种意义上是用于构建代码的不同名称空间。

我的 ViewModel 没有引用模型。它引用类TestReportItem。

至于TestReportItem它是一个模型。仅仅因为它有/可能有方法和操作是没有实际意义的。如果需要创建部分类文件,其中模型类属性包含在一个部分中,而操作等都在另一个部分中,则可以实现分离。但这是可选的

访问字符串字段“标题”的数据模板。这是可接受的/最佳实践吗?

是否Title通过其在类中得到派生或生成。如果是,那么是的,如果不是,则放置Title在主 VM 上并将其提取/构建在Title.


推荐阅读