XAML で:
<Button Content="My Button" Command="{Binding MyViewModelCommand}" />
あなたのビューモデルで:
public class MyViewModel
{
public MyViewModel()
{
MyViewModelCommand = new ActionCommand(DoSomething);
}
public ICommand MyViewModelCommand { get; private set; }
private void DoSomething()
{
// no, seriously, do something here
}
}
INotifyPropertyChanged
およびその他のビューモデルの楽しみは省略されました。
ビューモデルでコマンドを構造化する別の方法は、この回答の最後に示されています。
ここで、 の実装が必要になりますICommand
。このような単純なものから始めて、必要に応じて他の機能/コマンドを拡張または実装することをお勧めします。
public class ActionCommand : ICommand
{
private readonly Action _action;
public ActionCommand(Action action)
{
_action = action;
}
public void Execute(object parameter)
{
_action();
}
public bool CanExecute(object parameter)
{
return true;
}
public event EventHandler CanExecuteChanged;
}
ビューモデルをレイアウトする別の方法を次に示します。
public class MyViewModel
{
private ICommand _myViewModelCommand;
public ICommand MyViewModelCommand
{
get
{
return _myViewModelCommand
?? (_myViewModelCommand = new ActionCommand(() =>
{
// your code here
}));
}
}
}