它可以命名为MVVM模型吗?因为View通过ViewModelData与DataModel交互.View是否应仅与ViewModelData交互?我确实读过一些正确的MVVM模型应该在ViewModel中实现INotify但不在Model中.这样对吗?
namespace WpfApplication135
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
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
{
get
{
return label;
}
set
{
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;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
XAML
<Grid>
<Label Content="{Binding DM.Label}" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)
Hen*_*man 10
MVVM最初的想法确实是View不应该知道(不依赖于)模型.
在实践中,这意味着在ViewModel中重新实现所有这些Model属性(参见下图中的浅黄色框),需要做很多工作.当您的模型可以轻松实现INPC时,例如从数据库模式生成时,会非常痛苦.数据库优先模式下的实体框架允许您通过T4模板注入INPC代码.
很快就达成共识,转发ViewModel.Model财产并绑定到那个,就像你的DM财产一样.请参见图片中的浅蓝色框.
在这张照片中,问题非常清晰,请注意右上角的大量箭头.它们描述了各种解决方案,您可以使用它们的任意组合.
| 归档时间: |
|
| 查看次数: |
1073 次 |
| 最近记录: |