MVVM模式结合MVVMlight框架的应用(20)
来源:互联网 发布:java商城项目说明 编辑:程序博客网 时间:2024/06/05 05:18
MVVM模式结合MVVMlight框架的应用
代码下载
程序=数据结构+算法
面向对象=对象+对象之间关系
1.以数据为中心的开发方式。
1)Model:定义一个数据结构。
关键代码:实现接口INotifyPropertyChanged
2)ViewModel:定义算法操作数据结构(数据集合,增加,删除,修改,查询)
关键代码:继承ViewModelBase
定义一个集合ObservableCollection<c401xmmc> C401xmmcs
3)View:数据的一种展现形式。(查询,新增,修改,删除)
交互。事件通知,
Messenger.Default.Unregister(this);
OKButtonCommand = new RelayCommand<c401xmmc>(OKButtonClick);//传递命令
先注册,后应用。
注册:
Messenger.Default.Register<String>(
this,
"Home2",
msg =>
{
CreateC401xmmc newCustomer = new CreateC401xmmc();
newCustomer.Title = msg;
newCustomer.Show();
});
发送命令:
Messenger.Default.Send("新建1", "Home2");
MVVMlight中封装的是多播。(观察者设计模式)
界面交互通关过注册命令处理。
以一个界面为主,其他界面是此界面的辅助。(利用主界面的ViewModel)
2.界面都是通过绑定展现数据。
主界面关键代码
1)前台View
<Grid.DataContext>
<vm:HomeViewModel />
</Grid.DataContext>
<Button Content="新增" Width="120" Height="30" Command="{Binding CreateCommand}" ></Button>
<sdk:DataGrid AutoGenerateColumns="True" Grid.Row="1"
HorizontalAlignment="Stretch"
ItemsSource="{Binding Path=C401xmmcs}"
Margin="20,10,20,10" Name="dataGrid1"
VerticalAlignment="Stretch" />
2)后台ViewModel
public RelayCommand CreateCommand { get; private set; }
CreateCommand = new RelayCommand(Create); //CreateCommand绑定到Create处理函数
Create函数中
Messenger.Default.Send("新建1", "Home2");
因为前面注册:
Messenger.Default.Register<String>(
this,
"Home2",
msg =>
{
CreateC401xmmc newCustomer = new CreateC401xmmc();
newCustomer.Title = msg;
newCustomer.Show();
});
录入数据界面,确定保存
1)前台View
<Grid.DataContext>
<vm:HomeViewModel />
</Grid.DataContext>
<TextBox Grid.Row="0" Grid.Column="1" Height="30"
Text="{Binding Path=B401Id, Mode=TwoWay}" />
<Button x:Name="OkButton" Content="确定" Click="OKButton_Click"
Width="75" Height="23" HorizontalAlignment="Right"
Margin="0,12,0,0" Grid.Row="1"
Command="{Binding OKButtonCommand}"
CommandParameter="{Binding ElementName=c401xmmc, Path=DataContext}"
/>
2)后台ViewModel
public RelayCommand<c401xmmc> OKButtonCommand { get; private set; }
OKButtonCommand = new RelayCommand<c401xmmc>(OKButtonClick);//传递命令
OKButtonClick方法中处理
Messenger.Default.Send<c401xmmc>(param, "ChildWindow");
因为前面注册:
Messenger.Default.Register<c401xmmc>(this, "ChildWindow", AddCustomer);
AddCustomer函数中处理数据
private void AddCustomer(c401xmmc param)
{
_customers.Add(param);
//可以保存到数据库
RaisePropertyChanged("C401xmmcs");
}
总结:
1.数据结构单对象,对象集合。算法:对数据的处理。
2.不要去界面要数据。数据一定是在数据结构中。充分利用Siliverlight的绑定机制,不同控件绑定方式不同。
扩展:
1.结合数据库处理数据。初始化,处理数据。Silverlight与RIA WCF服务结合起来。
2.MEF插件组装不同的ViewModel。
练习思考:添加修改,删除按钮。
效果:
新增界面
代码下载
- MVVM模式结合MVVMlight框架的应用(20)
- Silverlight MVVM模式开发 -MVVMLight
- ASP.NET MVC4 结合MVVM的应用初探(一)——国产大牛MVVM框架avalon应用
- avalon 可以很好的与jquery结合mvvm模式框架
- MVVM:MVVM、MVVMLight、MVVMLight Toolkit之我见
- [MVVM]01-MVVMLight安装
- MVVM、MVVMLight、MVVMLight Toolkit之我见
- MVVM、MVVMLight、MVVMLight Toolkit之我见
- MVVM、MVVMLight、MVVMLight Toolkit之我见
- MVVM、MVVMLight、MVVMLight Toolkit之我见
- MVVM设计模式的大体布局框架
- Android 的MVVM模式的简单应用
- unity MVVM框架应用
- MvvmLight框架使用入门(一)
- MvvmLight框架使用入门(二)
- MvvmLight框架使用入门(三)
- MvvmLight框架使用入门(四)
- 框架模式-MVVM
- 隐藏datalist指定列
- mysql中bigint、int、mediumint、smallint 和 tinyint的语法介绍
- js复习之-基本语法及数据类型
- asp.net Ajax Post 请求 一般处理程序
- 因为背后的艰辛和专注,才有了芭蕾舞台上的优雅美好
- MVVM模式结合MVVMlight框架的应用(20)
- 在某个目录下查找包含某个字段的文件
- vs2008编译QT,Boost,OpenCV步骤记录
- 系统变量设置 让Windows桌面干净起来 ——windows+R不用鼠标启动启动软件
- signal(SIGPIPE, SIG_IGN)
- list.add addAll
- snprintf
- android 自定义edittext边框
- 描述Oracle数据服务器启动方式