为Windows Phone Mango MVVM 应用创建可复用 ICommand 实现类

在这篇文章中,我将谈一下windows phone 7.1 Mango中的ICommand接口,怎么实现一个ICommand的实现类:DelegateCommand,以及怎么在MVVM Mango应用中使用。

当我们谈及Commands时,一般说来,Command有两个功能:

a:执行一个特殊的行为:command的主要功能。

b:确定某一UIElement的视觉状态(visual state):例如确定button是否可用。

DelegateCommand - ICommand可复用实现类

DelegateCommand:实现了ICommand,当需要使用command时,可用使用此类。(多在viewmodel中)

ICommand组成如下:

XDJ5[~55[X`AR_5%MF29DTL

ICommand成员如下:

a:CanExecuteChanged事件和CanExecute方法被用来确定command所施加控件的视觉状态,它们是这样工作的:当某command施加于某控件时,控件会调用CanExecute方法,来确定初始的视觉状态,假设调用者是button,如果CanExecute方法返回false,button会被禁用。button同时也会订阅CanExecuteChanged事件。当触发CanExecuteChanged事件时,会再次调用CanExecute以确定是否需要修改视觉状态。

b:Execute方法比较直白:当需要执行某些行为操作时,控件会调用它。例如,当按下按钮时。

下面是DelegateCommand的代码清单:

DelegateCommand

Windows Phone Mango MVVM 应用示例

为了说明DelegateCommand的用法,我们使用MVVM模式,创建一windows phone 7.1 mango的应用程序,创建View、ViewModel和Model。

Model

此时,创建Person类,包含一个string类型的属性:


View Model

 

这是最重要的部分,使用了新创建的DelegateCommand类。我将创建PersonViewModel类,暴露ObservableCollection<Person>类型的DataSource属性和ICommand类型的LoadDataCommand属性。

 


 

View

在这部分,我将添加一些UI元素,并通过ViewModel连接至数据,首先,需要为View设置DataContext,为简单起见,我仅是在View构造器中给DataContext设置为PersonViewModel的实例。

接下来,绑定Command至button。


有关commands的更多信息,可参阅MSDN文档:


译自:windowsphonegeek

posted @ 2011-09-20 11:33  sunfish  阅读(2017)  评论(4编辑  收藏  举报