我只是在学习 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
委托。我可以实现RelayCommand<T>
using Action<T>
- 如果可以,我该怎么做以及如何使用它?
谁能给我任何关于使用 MVVM 的 CommandParameters 的实际示例,这些示例不涉及使用 3rd-party 库(例如 MVVM Light),因为我想在使用现有库之前完全理解它。
谢谢。