2009-09-23 23 views
9

Với MVVM và WPF, cách tốt nhất/đơn giản để xử lý việc mở và đóng cửa sổ và hộp thoại mới là gì? Mở và đóng nên được điều khiển bởi quyền ViewModel? Nhưng ViewModel không nên biết về chế độ xem ...Làm cách nào để xử lý việc mở và đóng Windows mới bằng MVVM?

+0

Tôi đã trả lời một câu hỏi rất giống nhau trong [bài đăng này] (http://stackoverflow.com/a/15512972/385995). –

Trả lời

6

Tôi thường sử dụng giao diện cho việc này. Ví dụ, nếu tôi muốn chỉnh sửa một bản ghi trong một cửa sổ riêng biệt, tôi có một giao diện IEditingProvider <TViewModel>, mà tôi có thể thực hiện ở một nơi khác và sau đó truyền tham chiếu giao diện đến hàm tạo của ViewModel của tôi. EditingProvider có thể chỉ làm như sau:

class MyRecordEditingProvider: IEditingProvider<MyRecordViewModel> 
{ 
    // Implementation of generic interface method 
    public void Edit(MyRecordViewModel model) { 
     EditWindow edit = new EditWindow(); 
     edit.DataContext = model; 
     edit.ShowDialog(); 
    } 
} 
+0

Làm thế nào để bạn duy trì EditingProviders có sẵn cho (một phần nhất định) ứng dụng của bạn và làm thế nào để bạn lấy lại cá thể chính xác mà cuối cùng bạn sẽ chuyển tới hàm tạo của ViewModel? Tôi cho rằng nó không phải là tất cả các hardwired nhưng decoupled? – bitbonk

+0

Có, nó được tách riêng. Trên thực tế tôi đang sử dụng một Dependency Injection Framework (Composite Application Block bởi Microsoft) để lập bản đồ các giao diện chung để triển khai thực hiện. Tôi hiện đang làm điều đó trong mã, nhưng Unity Container cũng có thể được cấu hình bằng cách sử dụng một tập tin cấu hình. – Botz3000

+0

Bạn có một giải pháp thân thiện với MVVM để đặt thuộc tính 'Chủ sở hữu' của EditWindow trước khi bạn gọi ShowDialog không? Nếu chủ sở hữu không được thiết lập (ví dụ MainWindow), hộp thoại phương thức có thể đi sau cửa sổ chính khá lạ và khó hiểu từ góc độ người dùng. – Slauma

Các vấn đề liên quan