Ho bisogno di un po 'di aiuto per capire la relazione tra un viewmodel e un comando e la responsabilità del viewmodel.
Proverò a dare un esempio (usando Caliburn Micro).
Ho una classe viewmodel, una classe di comando e una vista con un pulsante Salva.
public class EditViewModel : Screen
{
public bool CanSave
{
get { return IsDirty; }
}
public void Save()
{
var command = new SaveCommand(this); // command gets reference to VM
command.Execute();
}
}
public class SaveCommand
{
private readonly EditViewModel _viewModel;
public SaveCommand(EditViewModel viewModel)
{
_viewModel = viewModel;
}
public void Execute()
{
var work = _viewModel.Work;
..
_viewModel.IsDirty = false;
}
}
Quando l'utente fa clic su Salva. Il metodo Save () viene chiamato e genera un comando che salva il lavoro.
Ora la mia domanda è, se il comando avesse un riferimento al viewmodel?
No) Il viewmodel dovrà passare il lavoro al comando, che dovrà restituire il risultato del salvataggio al viewmodel, che si aggiornerà da sé.
Sì) Il comando richiede un riferimento a viewmodel e le proprietà devono essere rese pubbliche.
No sembra il modo più pulito, ma richiede anche un lavoro extra, quando il lavoro o il risultato non sono un semplice bool o simili.
Credo che la radice sia tutto. Qual è la relazione tra un viewmodel e il suo comando e la responsabilità del viewmodel?
Esiste una strong relazione "amico" 1: 1 tra il modello di visualizzazione e il suo comando, in cui il codice è stato appena spostato in un'altra classe. Quindi non c'è niente di sbagliato con il comando che ha accesso diretto a viewmodel.
Un'altra comprensione, il viewmodel è una classe molto semplice, quasi solo con proprietà e contiene poca logica. Quindi la logica dovrebbe essere nel comando.
O il viewmodel è piuttosto intelligente e dovrebbe contenere la logica dell'applicazione. I comandi sono necessari solo quando ce ne sono troppi in un viewmodel o sono un po 'complicati altrimenti il codice di comando può rimanere nel viewmodel.
Sto solo vagando, suppongo, per favore aiutami a capire il modellismo e qual è la sua responsabilità?