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}/>