При использовании, большинство примеров, которые я видел использовать ленивую инициализацию Джоша Смита RelayCommand такие как:Почему RelayCommands обычно используют ленивую инициализацию?
public class ViewModel
{
private ICommand myCommand;
public ICommand MyCommand
{
get
{
if (myCommand == null)
{
myCommand = new RelayCommand(p => DoSomething());
}
return myCommand;
}
}
// ... stuff ...
}
Вместо того, чтобы создавать RelayCommand в конструкторе, как это:
public class ViewModel
{
public ViewModel()
{
MyCommand = new RelayCommand(p => DoSomething());
}
public ICommand MyCommand
{
get;
private set;
}
// ... stuff ...
}
Что такое польза от использования ленивой инициализации здесь? Он должен будет вызвать свойство get при настройке привязки, поэтому я не вижу причины использовать этот метод над настройками вещей в конструкторе.
Я что-то упустил?
Вы правы. Ленивая инициализация RoutedCommands не имеет никакого смысла, потому что они очень легкие, и они загружаются в любом случае, как только View связывается с ним. – jbe