WPF-Befehle --- Wie Ansichtsmodell richtig aus View für Logik befestigen?

stimmen
0

Ich habe ziemlich viele verschiedene Beiträge in Bezug auf diese gesehen, aber ich bin immer noch verwirrt darüber, was der richtige Weg, dies zu tun ist. Ich bin die Umsetzung RelayCommand und IRequireViewID Dinge zu tun, wie eine WindowsManager Klasse aufrufen Fenster aus der Sicht zu schließen, wo es nicht wissen muss, welche Fenster sie rufen, usw. Allerdings Situationen, die so entstehen, wo ich bin nicht sicher, wie man implementieren Dinge richtig.

Also im Grunde habe ich einen Befehl im Ansichtsmodell, wo Sie auf eine Schaltfläche klicken und ich brauche Daten an eine DB zu speichern, wenn dies geschieht. Wie habe ich den Befehl in der Ansicht, aber dann legte die Logik für diesen in das Ansichtsmodell? IE, im Grunde das Ansichtsmodell müßte wissen, wenn der Befehl aufgerufen wird. Ich meine, ich immer eine statische Methode in dem Viewmodel setzen könnte und es aus der Sicht nennen, aber ich gehe davon aus, dass wahrscheinlich keine guter Weg ist, es zu implementieren, dh MyViewModel.RedValidation aus der Ansicht.

RelayCommand Klasse

public class RelayCommand : ICommand
{
    private Action commandTask;

    public RelayCommand(Action commandToRun)
    {
        commandTask = commandToRun;
    }

    public bool CanExecute(object parameter)
    {
        return true;
    }

    public event EventHandler CanExecuteChanged;
    public void Execute(object parameter)
    {
        commandTask();
    }
}

Aussicht

public ICommand ValidateRed
{
    get => new RelayCommand(RedValidation);
}

 private void RedValidation()
 {
     //SAVE Data To DB <----This should be in the ViewModel though right?

 }

XAML:

    <Button Name=ValidateBtn Style={StaticResource mainButtons} Content=Validate Email Width=100 
            HorizontalAlignment=Left Command={Binding ValidateRed}/>
Veröffentlicht am 27/11/2018 um 17:45
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Alles, was Sie in „Ansicht“ sollte in „Ansichtsmodell“ sein. Befehle sind Eigenschaften des View-Modells, nicht die Ansicht (auch, sollten Sie nicht gegen die Ansicht von 99% der Zeit verbindlich).

Sobald Sie das geändert haben, sollte es ins Lot zu kommen, wie Sie es erwarten.

Beantwortet am 27/11/2018 um 17:48
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more