Con MVVM e WPF quale sarebbe un modo buono/diretto per gestire l'apertura e la chiusura di nuove finestre e finestre di dialogo? L'apertura e la chiusura dovrebbero essere guidate dal ViewModel giusto? Ma il ViewModel non dovrebbe sapere della vista ...Come gestisco l'apertura e la chiusura di nuove finestre con MVVM?
risposta
Di solito uso le interfacce per questo. Ad esempio, se voglio modificare un record in una finestra separata, ho un'interfaccia IEditingProvider <TViewModel>, che posso implementare da qualche altra parte e quindi passare un riferimento all'interfaccia al costruttore del mio ViewModel. L'EditingProvider potrebbe solo fare qualcosa di simile:
class MyRecordEditingProvider: IEditingProvider<MyRecordViewModel>
{
// Implementation of generic interface method
public void Edit(MyRecordViewModel model) {
EditWindow edit = new EditWindow();
edit.DataContext = model;
edit.ShowDialog();
}
}
In che modo è possibile mantenere gli EditingProvider a disposizione (una certa parte) dell'applicazione e come recuperare l'istanza corretta che verrà passata al costruttore di ViewModel? Suppongo che non sia tutto cablato ma disaccoppiato? – bitbonk
Sì, è disaccoppiato. In realtà sto usando un Dependency Injection Framework (Composite Application Block di Microsoft) per mappare le interfacce generiche alle implementazioni. Attualmente lo sto facendo in codice, ma il contenitore Unity può anche essere configurato utilizzando un file di configurazione. – Botz3000
Avete una soluzione MVVM-friendly per impostare la proprietà 'Owner' di EditWindow prima di chiamare ShowDialog? Se il proprietario non è impostato (per la finestra principale, ad esempio), la finestra di dialogo modale può andare dietro la finestra principale che è piuttosto strana e confusa dal punto di vista dell'utente. – Slauma
- 1. Ricaricamento di finestre senza chiusura e riapertura
- 2. xmonad: sposta nuove finestre fluttuanti
- 3. Come posso rilevare quando vengono aperte nuove finestre e/o ottenere un elenco di finestre aperte?
- 4. Come ti concentri sulle nuove finestre con il selenio ide?
- 5. Come gestisco la mia autenticazione con WorldDomination e Nancy?
- 6. Come creare nuove finestre PyQt4 da una finestra esistente?
- 7. È necessario un ID univoco in javascript per finestre con schede e nuove finestre in Internet Explorer
- 8. Evento di chiusura di finestre di cattura in un'applicazione wpf
- 9. Come gestisco la convalida condizionale in MVC3?
- 10. Come aprire un URL nelle schede di IE e non in nuove finestre - Java
- 11. Come gestisco la configurazione dell'applicazione in ASP.NET?
- 12. Chiusura di tutte le finestre di dialogo jQuery in JavaScript
- 13. Come gestisco Login/Logout in Caliburn.Micro?
- 14. WPF (MVVM): chiusura di una vista da Viewmodel?
- 15. Come hai implementato con successo la funzionalità MessageBox.Show() in MVVM?
- 16. Come gestisco le eccezioni?
- 17. MVVM e la proprietà SelectedText del TextBox
- 18. Buone o cattive pratiche per le finestre di dialogo in wpf con MVVM?
- 19. MVVM e generazione dinamica di controlli
- 20. apertura e chiusura con OpenCV
- 21. con e chiusura di file in Python
- 22. Più finestre grafiche con SDL2 e Lisp?
- 23. Finestra di dialogo JQuery: come eseguire un aggiornamento parziale della pagina e ottenere ogni volta nuove finestre di dialogo
- 24. tag di chiusura con la proprietà ID
- 25. Qual è la differenza tra la chiusura del percorso di Bezier con la funzione closePath e la chiusura manuale?
- 26. Come gestisco lo spazio bianco con il elementtree di Python?
- 27. Wpf UserControl e MVVM
- 28. Come gestisco le classi con metodi statici con Ninject?
- 29. Qt: Come gestisco l'evento dell'utente premendo il pulsante "X" (chiudi)?
- 30. Come gestisco globalmente l'evento onClose di fancybox?
ho risposto a una domanda molto simile in [questo post] (http://stackoverflow.com/a/15512972/385995). –