gpt4 book ai didi

c# - 如何在 MVVM 模式中正确实现模型和 View 模型

转载 作者:行者123 更新时间:2023-12-03 10:37:15 25 4
gpt4 key购买 nike

我已经开始学习 MVVM 模式并面临一些问题。我正在构建一个存储某个国家/地区的省市列表的应用程序。现在我需要知道我应该如何准确地实现模型。

应该说数据库中的表及其字段如下:

表: 省份:
身份证、姓名

表:城市
ID、省ID、名称

现在我想知道哪种方法更适合模型?模型的属性是否应该与表中的字段完全相同?例如:

class Province {

public uint ID {get; set;}
public string Name {get; set;}

};

class City {
public uint ID {get; set;}
public uint ProvinceID {get; set;}
public string Name {get; set;}

}

或者,City 类最好引用它的省,例如:
class City {
public uint ID {get; set;}
public Province Province {get; set;}
public string Name {get; set;}

}

或任何更好的想法?

View 模型呢?我应该在 ProvinceViewModel 中有一个 CityViewModel 的列表吗?

提前致谢。如果我没有清楚地解释我的问题,请告诉我。

最佳答案

为什么使用 ID 到特定的 Province如果你能得到实际的 Province作为你类的一员?

假设您需要省份名称,因此您需要定位和构建 Province首先要获得实际名称。话虽如此,根本没有必要。

基本上你有一个 Model , 一个 ViewModelView在 MVVM 模式中。 ViewViewModel 交互反之亦然。另外,ViewModel使用 Model为了做出改变。

您可以将两个类都用作 Model在使用 ViewModel 时对于每个类(class)。 ViewModel对于 Province可以构造如下:

class ProvinceViewModel : INotifyPropertyChanged
{
private Province _Province;

public string Name
{
get { return _Province.Name; }
set
{
if (_Name == value) return;
_Province.Name = value;
OnPropertyChanged("Name");
}
}

public ProvinceViewModel(Province province)
{
_Province = province;
}

public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}

注意 INotifyPropertyChanged的执行.你现在可能会问我为什么要实现它。为了更新您的 View ,您需要此界面发布任何消息并通知您的 View ,在你的 Model已经改变。

使用诸如 Caliburn.Micro 之类的框架怎么样? ?当然,这会保护你的大量工作,并且一旦你开始工作就会感觉很舒服。

关于c# - 如何在 MVVM 模式中正确实现模型和 View 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23049053/

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