9

我正在创建一个应用程序,使用户能够插入、更新和删除已输入然后显示在数据网格中的数据(CRUD 操作)。

在我的视图模型中,它包含绑定到 xaml 的属性(Firstname例如)。它还包含一个导航属性以及验证属性。

      [Required(ErrorMessage = "First Name is a required field")]
      [RegularExpression(@"^[a-zA-Z''-'\s]{1,20}$", ErrorMessage = "First Name must       contain no more then 20 characters and contain no digits.")]
      public string FirstName
      {
        get { return _FirstName; }
        set
        {
            if (_FirstName == value)
                return;

            _FirstName = value;
            OnPropertyChanged("FirstName");
        }
    }

此外,它包含xaml要执行的命令,创建 CRUD 操作的实例;

    private void UpdateFormExecute()
    {
        var org = new OrganisationTypeDetail();
        UpdateOrganisationTypeDetail(org);
    }

最后,它还包含 CRUD 操作。如插入、更新和删除。

这引出了我的问题。如果我想实现正确的 MVVM 方式,所有这些代码对于视图模型来说是否包含太多?

我应该使用模型并在我的视图模型中创建一个集合并将其绑定到我的xaml?这是正确的做法吗?

我应该为 CRUD 操作使用存储库系统吗?如果是这样,我将如何将文本字段中的数据传递给模型以进行更新?

我是 WPF、MVVM 的新手,如果没有适当的指导,很难适应。

4

2 回答 2

3

我想说这是实现 MVVM正确方法,但不是实现 MVVM正确方法。

我的意思是没有一种正确的方法来实现这种模式。如果您创建了一个可以绑定到您的视图的 ViewModel,而您的视图中没有任何额外的逻辑(即代码隐藏),那么您已经掌握了 MVVM 的精髓。

是否在代码中添加更多模式和结构完全取决于您。如果这是一个简单的应用程序,我会保持模式简洁。继续,让您的 ViewModel 直接与存储库对话。在这方面,您当前的代码对我来说看起来不错。

如果这是一个大型应用程序,您可能需要添加更多层,例如服务层、数据访问层。您可能想考虑依赖注入。

但是不要仅仅因为你认为你应该采用一种模式,或者添加一个额外的层。依赖注入听起来很酷,但在许多情况下它比它的价值更麻烦!

于 2012-11-23T09:52:12.203 回答
0

For me it’s not the correct way, I think defining the properties like FirstName in view model is not good idea. view should contain model only and your view model should be wrap the model which should be bounded to XAML(if required).

Also model object creation should be completely independent of view model. View model should know only about unit operations on models and validations should be inside the model e.g in your case FirstName validations are in ViewModel means you are only limiting GUI to validate the FirstName property, but what if someone set it from other place.

于 2012-11-23T10:07:45.857 回答