sách gpt4 ai đã đi

c# - Mvvm 模型 View 模型

In lại Tác giả: Space Dog 更新时间:2023-10-30 00:18:41 30 4
mua khóa gpt4 Nike

可不可以命名为MVVM模型?因为View通过查看模型数据。 View 是否应该只与 ViewModelData 交互?我确实在某处读到正确的 MVVM 模型应该在 ViewModel 而不是 Model 中实现 INotify。对吗?

namespace WpfApplication135
{
///
/// Interaction logic for MainWindow.xaml
///

public partial class MainWindow : Window
{

public MainWindow()
{
InitializeComponent();
DataContext = new ViewModelData();
}
}
public class ViewModelData
{
public DataModel DM { get; set; }
public ViewModelData()
{
DM = new DataModel();
}
}
public class DataModel : INotifyPropertyChanged
{
public int label;
public int Label
{
lấy
{
return label;
}

bộ
{
label = value;
RaisePropertyChanged("Label");
}
}
public DataModel()
{
Action Update = new Action(Run);
IAsyncResult result = Update.BeginInvoke(null, null);
}
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string info)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
public void Run()
{
int i=0;
while(true)
{
System.Threading.Thread.Sleep(2000);
Label = ++i;
}
}
}
}

xaml

    



1 Câu trả lời

MVVM 最初的想法确实是 View 不应该知道(不依赖于)模型。

在实践中,这意味着在 ViewModel 中重新实现所有这些模型属性(请参见下图中的浅黄色框),需要大量工作。当您的模型可以轻松实现 INPC 时,例如当它是从数据库模式生成时,会更加痛苦。数据库优先模式下的 Entity Framework 允许您通过 T4 模板注入(inject) INPC 代码。

共识很快就变成了可以转发 ViewModel.Model 属性并绑定(bind)到它,就像您的 DM 属性一样。请参阅图片中的浅蓝色框。

问题在此图片中得到了很好的可视化,请注意右上角的大量箭头。它们描述了数据绑定(bind)的各种解决方案,您可以使用它们的任意组合。

WPF LOB Apllication Layers - MVVM

关于c# - Mvvm 模型 View 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32223930/

30 4 0
Bài viết được đề xuất: c# - C# 中相等性的最少代码
Bài viết được đề xuất: C# WPF - 如何删除 DataGrid 中的列
Bài viết được đề xuất: python - 估计器预测无限循环
Bài viết được đề xuất: python - 如何在 python 中继承类型提示?
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com