大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1.什么是MVVM?
成都创新互联公司是一家专业提供青山企业网站建设,专注与成都网站建设、做网站、HTML5建站、小程序制作等业务。10年已为青山众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
MVVM是Model、View、ViewModel的简写,这种模式的引入就是使用ViewModel来降低View和Model的耦合,说是降低View和Model的耦合。也可以说是是降低界面和逻辑的耦合,理想情况下界面和逻辑是完全分离的,单方面更改界面时不需要对逻辑代码改动,同样的逻辑代码更改时也不需要更改界面。同一个ViewModel可以使用完全不用的View进行展示,同一个View也可以使用不同的ViewModel以提供不同的操作。
2.项目目录
从上面的图我们可以看出,处理事务的文件有几个类型:View,ViewModel,Command,Property,Model,这个几个类型的图片
最下面的ViewModelBase.cs就是Property,对应处理触发属性发现变化的事务。
3.代码分析:
a):入口 App.xaml
private void Application_Startup(object sender, StartupEventArgs e) { //创建一个ViewModel; MainViewModel mode = new MainViewModel(); //初始化ViewModel内容 mode.ItemDatas = new ObservableCollection(); mode.ItemDatas.Add(new ItemData { Title = "TST", Content = "sss" }); mode.ItemDatas.Add(new ItemData { Title = "2TST", Content = "2sss" }); //初始化View; MainWindow main = new MVVMGridDemo.MainWindow(); //把ViewModel绑定到View上 main.DataContext = mode; //显示窗口 main.Show(); }
b):MainWindow窗口ViewModel;
view代码
viewmodel代码
public class MainViewModel : ViewModelBase { private ObservableCollection _itemdatas;//view 中Name为Texxt的值在这里实现 private string _texxt; public string TexxT { get { return this._texxt; } set { this._texxt = value; OnPropertyChanged("TexxT"); } }//view中itemsourse 为ItemData的数据绑定; public ObservableCollection ItemDatas { get { return _itemdatas; } set { this._itemdatas = value; OnPropertyChanged("ItemDatas"); } }//修改按钮点击事件在这里实现 public ICommand ButtonClick { get { return new ActionCommand(p => BClick(p)); } } private void BClick(object obj) { DataGrid box = (DataGrid)obj; ItemDatas[0].Title = TexxT;//刷新dataGrid box.Items.Refresh(); } }
全部源代码:https://github.com/servucn/MVVMGridDemo
交流地址:http://www.ucasp.net/wpfresources/mvvmgriddemo.shtml