2009-09-23 9 views

Odpowiedz

6

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

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

+0

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

+0

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

Powiązane problemy