【发布时间】:2011-05-27 20:29:06
【问题描述】:
我只是在学习 Silverlight,正在研究 MVVM 和 Commanding。
好的,所以我已经看到了基本的 RelayCommand 实现:
public class RelayCommand : ICommand
{
private readonly Action _handler;
private bool _isEnabled;
public RelayCommand(Action handler)
{
_handler = handler;
}
public bool IsEnabled
{
get { return _isEnabled; }
set
{
if (value != _isEnabled)
{
_isEnabled = value;
if (CanExecuteChanged != null)
{
CanExecuteChanged(this, EventArgs.Empty);
}
}
}
}
public bool CanExecute(object parameter)
{
return IsEnabled;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
_handler();
}
}
如何使用此命令通过命令向下传递参数?
我看到你可以像这样传递CommandParameter:
<Button Command="{Binding SomeCommand}" CommandParameter="{Binding SomeCommandParameter}" ... />
在我的 ViewModel 中,我需要创建命令,但 RelayCommand 需要一个 Action 委托。我可以使用Action<T> 实现RelayCommand<T> - 如果可以,我该怎么做以及如何使用它?
谁能给我任何关于使用 MVVM 的 CommandParameters 的实际示例,这些示例不涉及使用 3rd 方库(例如 MVVM Light),因为我想在使用现有库之前完全理解它。
谢谢。
【问题讨论】:
标签: mvvm silverlight-4.0 command relaycommand commandparameter