私はちょうど Silverlight を学んでいて、MVVM と Commanding を見ています。
OK、基本的な 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>
- もしそうなら、どのようにそれを行い、どのように使用するのですか?
既存のライブラリを使用する前に完全に理解したいので、サードパーティのライブラリ (MVVM Light など) を使用しない MVVM を使用した CommandParameters の実用的な例を教えてください。
ありがとう。