Frage

Bei der Verwendung von Josh Smith RelayCommand , die meisten Beispiele ich habe Verwendung faul gesehen Initialisierung wie:

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 ist der Nutzen von faul Initialisierung hier mit? Es wird über die get-Eigenschaft rufen, wenn die Bindung der Einrichtung, so kann ich keinen Grund gesehen, diese Methode über Einstellungen Dinge aufbrauchen im Konstruktor.

Bin ich etwas fehlt hier?

War es hilfreich?

Lösung

Eigentlich WPF und Silverlight werden den Relais Befehl erhalten nur einmal pro Bindung, so dass Sie wirklich keine dahinter liegenden Feld überhaupt speichern müssen:

public ICommand MyCommand
{
    get
    {
        return new RelayCommand(p => DoSomething());
    }
}

So, während es ist nichts falsch mit ihm in dem .ctor zu schaffen, wie Sie vorschlagen, es gibt sehr wenig Grund zu.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top