Я только изучаю 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>
, используя Action<T>
- если да, то как мне это сделать и как мне это использовать?
Может ли кто-нибудь дать мне какие-либо практические примеры использования CommandParameters с MVVM, в которых не используются сторонние библиотеки (например, MVVM Light), поскольку я хочу полностью понять их перед использованием существующих библиотек.
Спасибо.