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?
Trả lời
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();
}
}
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
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
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
- 1. nút đóng cửa sổ xử lý trong wpf MVVM
- 2. Cách xử lý sự kiện trong MVVM
- 3. Xử lý ngoại lệ MVVM
- 4. Làm cách nào để xử lý mở rộng biến Windows PATH khi được đặt từ PowerShell?
- 5. C#: Làm cách nào để mở và đóng sổ làm việc Excel?
- 6. Làm cách nào để xử lý dòng mới trong JSON?
- 7. WPF MVVM Sử dụng lệnh và xử lý sự kiện
- 8. Làm cách nào để xử lý xác thực bằng HttpWebRequest.AllowAutoRedirect?
- 9. Làm cách nào để đơn giản hóa việc xử lý biểu mẫu bằng PHP?
- 10. Gửi Ctrl-C để xử lý mở bằng Java
- 11. Làm cách nào để mở tệp bằng trình xử lý mặc định của trình bao?
- 12. Làm cách nào để xử lý các ngoại lệ trong Công việc bằng trình gỡ lỗi?
- 13. Làm cách nào để xử lý JSON bằng jquery?
- 14. Làm cách nào để xử lý ActivityNotFoundException?
- 15. Làm cách nào để xử lý tệp bộ nhớ cache?
- 16. Xử lý ký tự dòng mới trong đầu vào giữa Windows và Linux
- 17. Làm thế nào để xử lý chủ đề C# WPF trong mô hình xem MVVM
- 18. Làm thế nào để xử lý sự kiện SelectionChanged của ComboBox với MVVM trong wpf?
- 19. Xử lý ngoại lệ và mở tệp?
- 20. WPF/MVVM - làm thế nào để xử lý bấm đúp vào TreeViewItems trong ViewModel?
- 21. Làm cách nào để nắm bắt và xử lý đúng thời gian chờ RQ bằng Python?
- 22. Xử lý \ r \ n và \ n dòng mới trong python trên Mac so với Windows
- 23. Làm cách nào để tìm tệp xử lý quá trình của tôi đã mở trong Linux?
- 24. Làm thế nào để xử lý sự kiện Wpf DataGrid CellEditEnding trong MVVM?
- 25. làm cách nào để làm mới DataGrid trong Windows Mobile?
- 26. Làm cách nào để quản lý việc xử lý đối tượng khi tôi sử dụng IoC?
- 27. Làm cách nào để xử lý sự kiện Đóng trong Socket.io?
- 28. Cách định tuyến chuỗi truy vấn bằng "?" và làm thế nào để xử lý nó
- 29. Làm thế nào để đóng pyPDF "PdfFileReader" tập tin Class xử lý
- 30. Làm cách nào để làm mới dbgrid mà không cần đóng và mở tập dữ liệu trong delphi?
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). –