MVVMモードにおけるViewModelにおけるICommandの応用
5997 ワード
MVVMはwpf,sliverlight,window phoneで開発に役立ち、
最近このブロ友の文章を勉強しました.
この記事は主にViewModelでICommandを使用する方法を記録しています
Icommandは次のように定義されています.
RelayCommandクラスをカスタマイズし、ICommandクラスを継承
ViewModelの定義、ICommandの使用
ViewページにButtonコントロールを簡単に追加
ビューページの後置コードで
単純なViewModelのインスタンス化
PersonViewModel personView = new PersonViewModel();現在のページのデータコンテキストをViewmodelに関連付ける
this.DataContext = personView;
その後、View ModelとViewがバインドされ、View ModelのTestCommandコマンドがページ上のButtonボタンにバインドされます.
シミュレータを実行し、ボタンをクリックするとTestCommandコマンドが実行され、「hello world」ダイアログボックスが表示されます
コントロールにCommand属性がない場合は、Commandイベントをバインドするためにバックコードでコードを使用する必要があります.CanExecuteがfalseに戻ると、ボタンコントロールは使用できないグレーの効果を示します.
最近このブロ友の文章を勉強しました.
この記事は主にViewModelでICommandを使用する方法を記録しています
Icommandは次のように定義されています.
namespace System.Windows.Input
{
// :
// 。
public interface ICommand
{
// :
// 。
event EventHandler CanExecuteChanged;
// :
// 。
//
// :
// parameter:
// 。 , null。
//
// :
// , true; false。
bool CanExecute(object parameter);
//
// :
// 。
//
// :
// parameter:
// 。 , null。
void Execute(object parameter);
}
}
RelayCommandクラスをカスタマイズし、ICommandクラスを継承
public class RelayCommand : ICommand
{
private Action _handler;
//Action , , Execute 。
public RelayCommand(Action handler)
{
this._handler = handler;
}
// false,
public bool CanExecute(object parameter)
{
return true;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
_handler();
}
}
ViewModelの定義、ICommandの使用
public class PersonViewModel
{
public List<Person> Human { get; set; }
public PersonViewModel()
{
Human = new Persons().getPerson();
}
private ICommand _testCommand;
public ICommand TestCommand
{
get
{
return _testCommand = new RelayCommand(TestMethod);// delegate ,
}
}
public void TestMethod()
{
MessageBox.Show("hello world");
}
}
ViewページにButtonコントロールを簡単に追加
ビューページの後置コードで
単純なViewModelのインスタンス化
PersonViewModel personView = new PersonViewModel();現在のページのデータコンテキストをViewmodelに関連付ける
this.DataContext = personView;
その後、View ModelとViewがバインドされ、View ModelのTestCommandコマンドがページ上のButtonボタンにバインドされます.
シミュレータを実行し、ボタンをクリックするとTestCommandコマンドが実行され、「hello world」ダイアログボックスが表示されます
コントロールにCommand属性がない場合は、Commandイベントをバインドするためにバックコードでコードを使用する必要があります.CanExecuteがfalseに戻ると、ボタンコントロールは使用できないグレーの効果を示します.