Wenn RelayCommand, die meisten Beispiele der Verwendung von Josh Smith ich gesehen Verwendung faul Initialisierung haben wie:Warum verwenden RelayCommands normalerweise eine verzögerte Initialisierung?
public class ViewModel
{
private ICommand myCommand;
public ICommand MyCommand
{
get
{
if (myCommand == null)
{
myCommand = new RelayCommand(p => DoSomething());
}
return myCommand;
}
}
// ... stuff ...
}
Anstatt die RelayCommand im Konstruktor erstellen, wie folgt aus:
public class ViewModel
{
public ViewModel()
{
MyCommand = new RelayCommand(p => DoSomething());
}
public ICommand MyCommand
{
get;
private set;
}
// ... stuff ...
}
Was das ist Vorteil der Verwendung von Lazy-Initialisierung hier? Es muss die get-Eigenschaft aufrufen, wenn die Bindung eingerichtet wird, also habe ich keinen Grund gesehen, diese Methode über Einstellungen im Konstruktor zu verwenden.
Fehle ich hier etwas?
Sie haben Recht. Lazy-Initialisierung von RoutedCommands macht keinen Sinn, da sie sehr leicht sind und trotzdem geladen werden, sobald die View an sie bindet. – jbe