gpt4 book ai didi

c# - 如何使用 WPF MVVM 缩短代码?

转载 作者:行者123 更新时间:2023-11-30 17:29:37 25 4
gpt4 key购买 nike

我不知道这个问题是否属于这里,如果不属于请告诉我,但我正在为 WPF 和 MVVM 苦苦挣扎。

所以现在我有一个具有大约 20 个属性的 Customer 类:

public class Customer 
{
public int Id { get; set; }
public string Name { get; set; }
public string Address { get; set; }
...
}

例如,根据 MVVM,我必须在我的 ViewModel 中复制所有这些属性(我只添加了 name 属性以使问题不会太长。但考虑到我会将我的模型的所有 20 个属性添加到我的 ViewModel像下面这样):

public class CustomerViewModel : ViewModelBase
{
private string _name;
public string Name
{
get { return _name; }
set
{
_name = value;
OnPropertyChanged();
}
}
...
}

因此,您已经可以看到,仅使用该示例,我就会创建数百行代码。现在如果我需要将 View 的数据保存到数据库中,我会这样做:

private void SaveCustomer()
{
Customer customer = new Customer();
customer.Id = Id;
customer.Name = Name;
customer.Address = Address;
...
}

又是一大堆代码。如果我需要加载客户,我需要做同样的事情,只是相反,如果我需要清空所有属性,我需要设置每个属性 = null。

在我的项目中,我完全是这样做的,我不知道这是不是正确的方法,如果有请告诉我另一种方法。但这会创建数百行代码,而且我看不出这是如何维护的,因为使用那么多代码很容易失去跟踪。请告诉我是否有其他方法或者我的想法是否错误。

最佳答案

没有任何规则说您的模型 POCO 和 View 模型 POCO 必须不同。我只会使用 Customer,并拥有一个 View 模型:

public class CustomerPageViewModel
{
public Customer Customer
{
//get/set
}
}

这样,来自 UI 的任何更改都已经在该对象中,您可以将其传递给任何将保留更改的服务。 客户 可以 实现 INPC,但如果只有 UI 正在更改它,则没有必要。

顺便说一句;不要根据长度来衡量你的代码质量,有时你只是在虚拟机上有很多属性。根据维护、扩展等的难易程度来衡量它。

关于c# - 如何使用 WPF MVVM 缩短代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50888302/

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