wp7 mvvm模式学习之Command命令绑定

本文介绍了一种在MVVM模式下实现命令的方法。通过定义一个实现了ICommand接口的泛型类,可以创建命令并绑定到视图中。文章提供了完整的代码示例,包括viewmodel的实现及XAML文件配置。

 

mvvm模式的原来之类的就不说了,作为新手的我也说不清楚,下面只是说一下如何实现,作为学习笔记,仅供整理思路用。

 

1、项目结构如下,因为是简单示例,就没有弄model了,简单的数据在viewmodel里搞定

 

2、viewmodel 的内容,

首先要定义一个实现 ICommand接口的类,代码如下,这里定义的是一个泛型类

 1     public class MainCommand<T> : ICommand
 2     {
 3         private Action<T> _execute;//定义一个 Action<T> 类型的委托,用于命令执行时
 4         private Func<T, bool> _canExecute;//定义一个 Func<T,bool>类型的委托,用于判断是否执行命令时使用
 5 
 6         public MainCommand(Action<T> execute)
 7         {
 8             this._execute = execute;
 9         }
10 
11         public MainCommand(Action<T> execute, Func<T, bool> canExecute)
12         {
13             this._execute = execute;
14             this._canExecute = canExecute;
15         }
16 
17 
18         public bool CanExecute(object parameter)
19         {
20             //委托非空时调用
21             if (this._canExecute != null)
22             {
23                 return this._canExecute((T)parameter);
24             }
25 
26             return true;
27         }
28 
29         public event EventHandler CanExecuteChanged;
30 
31         public void Execute(object parameter)
32         {
33             //委托非空时调用
34             if (this._execute != null)
35             {
36                 this._execute((T)parameter);
37             }
38         }
39     }

 

然后,是viewmodel类的内容。这里命令执行的内容很简单,只是弹出一个对话框

 1     public class MainViewModel
 2     {
 3         public ICommand myCommand { set; get; }//定义命令属性
 4          public MainViewModel()
 5         {
 6             myCommand = new MainCommand<object>(ShowMessage,CanShow);
 7         }
 8 
 9         //命令执行的主体
10         private void ShowMessage(object str)
11         {
12             MessageBox.Show(str.ToString());
13         }
14 
15         //判断是否执行命令
16         private bool CanShow(object param)
17         {
18             //这里不做判断,简单返回true
19             return true;
20         }
21     } 

 


3、xaml文件的代码:

先添加命名空间:xmlns:MainVM="clr-namespace:Demo_MVVM_Command.MainViewModel"

定义DataContext:<Grid.DataContext>
                                <MainVM:MainViewModel />
                          </Grid.DataContext>

绑定命令:<Button Command="{Binding myCommand}" CommandParameter="Test123" Content="Test" />

所有代码如下:

 

 源代码:http://www.t00y.com/file/8256068

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值