初学WPF,数据绑定会了一些,但是Command为何物还是不太明白。今天晚上研究了一下,写了一个小Demo和初学者们分享!懂的人可以直接略过了~
1 。新建WPF项目,在mainwindow中添加button1。
2 . 新建类MyCommand.cs,定义我们的command。
3. 新建类MainWindowViewModel.cs,定义我们的viewmodel层。
class MyCommand : ICommand
{
readonly Action _execute;
readonly Func<bool> _canExecute;
public MyCommand(Action execute)
: this(execute, null)
{
}
public MyCommand(Action execute, Func<bool> canExecute)
{
if (execute == null)
throw new ArgumentNullException("execute");
_execute = execute;
_canExecute = canExecute;
}
public bool CanExecute(object parameter)
{
return _canExecute == null ? true : _canExecute();
}
public void Execute(object parameter)
{
_execute();
}
public event EventHandler CanExecuteChanged
{
add
{
if (_canExecute != null)
CommandManager.RequerySuggested += value;
}
remove
{
if (_canExecute != null)
CommandManager.RequerySuggested -= value;
}
}
}
4. 在主界面UI中将button1的数据源绑定到MainWindowViewModel的一个新实例。
class MainWindowViewModel
{
ICommand _buttoncommand;
public ICommand ButtonCommand
{
get
{
if (this._buttoncommand == null)
{
this._buttoncommand = new MyCommand(() =>
{
MessageBox.Show("My First Command!");
});
}
return this._buttoncommand;
}
}
}
5. button1的xaml语言下加入此属性:Command="{Binding ButtonCommand}"
运行,点击button,显示出我要的"My First Command!"。成功!