WPF εντολές --- Πώς να αποδίδουν ViewModel σωστά από View για λογική;

ψήφοι
0

Έχω δει αρκετές διαφορετικές θέσεις σχετικά με αυτό, αλλά είμαι ακόμα σύγχυση ως προς το ποιο είναι το σωστό τρόπο για να γίνει αυτό είναι. Είμαι εφαρμογή RelayCommand και IRequireViewID να κάνουμε τα πράγματα όπως να καλέσετε μια τάξη WindowsManager να κλείσει τα παράθυρα από την άποψη όπου δεν χρειάζεται να ξέρει τι παράθυρο που ζητά, κ.λπ. Ωστόσο, καταστάσεις που προκύπτουν, όπως αυτό είναι όπου είμαι σίγουρος πώς να εφαρμόσουν τα πράγματα σωστά.

Έτσι, βασικά έχω μια εντολή στο viewModel όπου κάνετε κλικ σε ένα κουμπί και θα πρέπει να αποθηκεύσετε τα δεδομένα σε ένα DB μόλις συμβεί αυτό. Πώς μπορώ να έχω την εντολή στην Προβολή αλλά στη συνέχεια βάλτε τη λογική για αυτό στο ViewModel; IE, βασικά το ViewModel θα πρέπει να γνωρίζετε όταν η Διοίκηση καλείται. Εννοώ θα μπορούσα πάντα να θέσει μια στατική μέθοδος στην viewmodel και να το ονομάσουμε από την προβολή, αλλά υποθέτω ότι μάλλον δεν είναι ένας καλός τρόπος για να το εφαρμόσουν, δηλαδή MyViewModel.RedValidation από την προβολή.

RelayCommand Class

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();
    }
}

Θέα

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}/>
Δημοσιεύθηκε 27/11/2018 στις 17:45
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
1

Ό, τι έχετε στο «Θέα» θα πρέπει να είναι σε «ViewModel». Οι εντολές είναι ιδιότητες του μοντέλου άποψη, δεν είναι η άποψη (επίσης, δεν πρέπει να είναι δεσμευτική κατά την άποψη του 99% του χρόνου).

Μόλις έχετε αλλάξει αυτό, θα πρέπει να μπαίνουν στη θέση τους με τον τρόπο που αναμένετε.

Απαντήθηκε 27/11/2018 στις 17:48
πηγή χρήστη

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