gpt4 book ai didi

c# - 这是实现 MVVM 的正确方法吗?

转载 作者:太空狗 更新时间:2023-10-29 17:57:25 25 4
gpt4 key购买 nike

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

在我的 View 模型中,它包含绑定(bind)到 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 方式,所有这些代码对于 View 模型来说是否太多了?

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

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

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

最佳答案

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

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

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

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

但是不要仅仅因为您认为应该采用某种模式或添加额外的层。依赖注入(inject)听起来很酷,但在很多情况下,它带来的麻烦超过了它的值(value)!

关于c# - 这是实现 MVVM 的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13526464/

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