Z MVVM i WPF jaki byłby dobry/prosty sposób obsługi otwierania i zamykania nowych okien i okien dialogowych? Otwieranie i zamykanie powinno być sterowane przez prawo ViewModel? Ale ViewModel nie powinien wiedzieć o widoku ...Jak obsługiwać otwieranie i zamykanie nowego systemu Windows za pomocą MVVM?
Odpowiedz
Zwykle używam do tego interfejsu. Na przykład, jeśli chcę edytować rekord w osobnym oknie, mam interfejs IEditingProvider <TViewModel>, który mogę zaimplementować gdzie indziej, a następnie przekazać odwołanie do interfejsu do konstruktora mojego ViewModel. EditingProvider może po prostu zrobić coś takiego:
class MyRecordEditingProvider: IEditingProvider<MyRecordViewModel>
{
// Implementation of generic interface method
public void Edit(MyRecordViewModel model) {
EditWindow edit = new EditWindow();
edit.DataContext = model;
edit.ShowDialog();
}
}
W jaki sposób utrzymujesz dostawców edycyjnych, które są dostępne dla (określonej części) Twojej aplikacji i jak odzyskujesz poprawną instancję, która ostatecznie przejdzie do konstruktora ViewModel? Przypuszczam, że nie wszystkie są połączone, ale odsprzęgnięte? – bitbonk
Tak, jest odłączony. Aktualnie używam Dependency Injection Framework (Composite Application Block firmy Microsoft) do mapowania ogólnych interfejsów do implementacji. Obecnie robię to w kodzie, ale Unity Container można również skonfigurować przy użyciu pliku konfiguracyjnego. – Botz3000
Czy masz rozwiązanie przyjazne dla MVVM, aby ustawić właściwość 'Owner' w oknie EdycjaViewWindow przed wywołaniem ShowDialog? Jeśli właściciel nie jest ustawiony (na przykład na MainWindow), okno modalne może zajść za główne okno, co jest dość dziwne i mylące z punktu widzenia użytkownika. – Slauma
- 1. Zamykanie systemu Windows za pomocą Javy
- 2. Jak obsługiwać przesyłanie plików systemu Windows za pomocą Selenium WebDriver?
- 3. otwieranie i zamykanie przy użyciu OpenCV
- 4. Haskell leniwy otwieranie i zamykanie plików
- 5. XNA z Windows Forms - Otwieranie nowego okna
- 6. Zgrabne zamykanie aplikacji przy wyłączaniu systemu Windows
- 7. Animowane otwieranie/zamykanie kolumn tabeli w jQuery
- 8. Wykrywanie AC (wł./Wył.) I okno (otwieranie/zamykanie) CAR za pomocą OBD
- 9. Wyszukiwanie pulpitu systemu Windows za pomocą C#
- 10. Wycisz głośność systemu Windows za pomocą C#
- 11. Otwieranie plików za pomocą JFileChooser
- 12. Wykryj wersję systemu Windows za pomocą JavaScript
- 13. Otwieranie i zamykanie tego samego pliku wiele razy vs Otwieranie pliku przez długi czas
- 14. Uwierzytelnianie systemu Windows za pomocą SignalR i samego hosta OWIN
- 15. Jak zwiększyć nazwę folderu za pomocą wsadowego systemu Windows?
- 16. Jak zaktualizować widok uproszczeń za pomocą wiersza polecenia systemu Windows?
- 17. Zarządzanie wieloma wyborami za pomocą MVVM
- 18. Zamykanie iPhone'a Odtwarzacz wideo za pomocą Javascriptu
- 19. WPF/MVVM - jak obsługiwać dwukrotne kliknięcie TreeViewItems w ViewModel?
- 20. Jak obsługiwać pojedyncze zasoby za pomocą RESTAdapter
- 21. Jak obsługiwać sesję NHibernate za pomocą usług?
- 22. Otwieranie zdalnego pliku za pomocą TextWrangler
- 23. Jak powinienem obsługiwać tryb offline za pomocą DynamoDB i iOS?
- 24. Otwieranie dokumentu Excel za pomocą programu EPPlus
- 25. Jak powiązać właściwość z polem tekstowym za pomocą zestawu narzędzi MVVM i MVVM?
- 26. Znajdź formantu za pomocą formantów systemu Windows Forms
- 27. Jak dokumentować anonimowe funkcje (zamykanie) za pomocą jsdoc-toolkit
- 28. Uruchamianie poleceń powłoki systemu Windows za pomocą pythona
- 29. Windows Phone 8 - MVVM ViewModels i App.xaml.cs
- 30. Usługa spoczynku WCF Uwierzytelnianie systemu Windows za pomocą przeglądarki
Odpowiedziałem na bardzo podobne pytanie w [tym wpisie] (http://stackoverflow.com/a/15512972/385995). –