When using Josh Smith's RelayCommand, most of the examples I've seen use lazy initialization such as:
public class ViewModel
{
private ICommand myCommand;
public ICommand MyCommand
{
get
{
if (myCommand == null)
{
myCommand = new RelayCommand(p => DoSomething() );
}
return myCommand;
}
}
// ... stuff ...
}
Rather than creating the RelayCommand in the constructor, like this:
public class ViewModel
{
public ViewModel()
{
MyCommand = new RelayCommand(p => DoSomething());
}
public ICommand MyCommand
{
get;
private set;
}
// ... stuff ...
}
What's the benefit of using lazy initialization here? It will have to call the get property when setting up the binding, so I can't seen a reason to use this method over settings things up in the constructor.
Am I missing something here?
Actually, WPF and Silverlight will get the relay command just once per binding, so you don't really need to store a backing field at all:
public ICommand MyCommand
{
get
{
return new RelayCommand(p => DoSomething());
}
}
So while there's nothing wrong with creating it in the .ctor as you suggest, there's very little reason to.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With