Như tôi đã hiểu, khi chúng ta sử dụng MVP, chúng ta di chuyển tất cả logic trình bày đến Presenter. Nhưng chúng tôi không muốn cho Người thuyết trình biết về triển khai chế độ xem, vậy làm cách nào chúng tôi có thể điều hướng đến màn hình khác trong ứng dụng? Làm cách nào để quản lý luồng ứng dụng trên ứng dụng thực của bạn?Làm thế nào để bạn điều hướng giữa các khung nhìn trong MVP bằng cách sử dụng C# WinForms?
Trả lời
Đó là Phương thức trên chế độ xem. Vì vậy, bạn sẽ có một phương pháp trừu tượng, như ShowCustomerForm(), ví dụ, và việc thực hiện cho WinForms sẽ là CustomerForm.Show (hoặc bất cứ điều gì nó là trong WinForms) và trong WebForms nó sẽ là Response.Redirict (CustomerForm.aspx).
Sử dụng một số giao diện navigator, ví dụ:
interface INavigator
{
void MoveTo (string screenName);
void MoveTo (string screenName, NavigationParameters parameters);
}
Mỗi người dẫn chương trình sau đó sẽ có một thể hiện của hoa tiêu này thông qua trong các nhà xây dựng. Bằng cách này, điều hướng được tách ra từ cả người trình bày và từ các chế độ xem riêng lẻ.
Bạn có thể có ánh xạ giữa tên màn hình và các lớp Biểu mẫu thực tế được xác định trong cấu hình.
Tôi cho rằng bạn có nghĩa là một màn hình khác có cặp MVP riêng?
Tôi đã suy nghĩ về trường hợp đó sáng nay, giải pháp của tôi có thể là có một Điều phối viên biết Người thuyết trình và cặp MVP cần được mở. Điều đó sẽ mở ra người trình bày mới + xem và, khi hoàn thành, tùy chọn gọi một phương thức trên người trình bày đầu tiên với kết quả.
Bằng cách đó, MVP đầu tiên không phải biết gì về màn hình mới, chúng chỉ kích hoạt sự kiện. Logic để mở cửa sổ thứ hai và liên lạc ngược lại hoàn toàn nằm trong Điều phối viên.
Chúng tôi thực hiện việc này bằng cách sử dụng những gì mà Lennaert gọi là điều phối viên (chúng tôi gọi đây là bộ điều khiển luồng công việc). Tôi đến từ phát triển web Java và ý tưởng là một dạng của ApplicactionController. Tôi đã chạy vào một số vấn đề với điều này, workflowcontroller chạy một lệnh. Mỗi lệnh đại diện cho một luồng công việc hoặc một loạt các bước có liên quan (do đó, trình quản lý luồng công việc tên). Flowcontroller xử lý naviagation giữa các lệnh và một flowcontroller có một navigator điều hướng giữa các bước. Mỗi bước có một sự kiện kết thúc (mà người trình bày được kết nối tới) và phương thức NextStep mà chúng tôi sử dụng để điều hướng đến bước tiếp theo. Trình điều khiển worflow của chúng tôi được kết hợp chặt chẽ với trình đơn để chúng tôi có thể điều hướng giữa các luồng công việc khác nhau Các bước thiết lập liên kết giữa chế độ xem và trình diễn. Chúng tôi không có bất kỳ cấu hình và có hardwired logic mà thiết lập các bước tiếp theo để thực hiện vào một phương pháp gọi là NextStep. Nó đang được sản xuất, nhưng tôi không hài lòng với điều này. Quá nhiều chi tiết để vào đây. Tôi đã suy nghĩ về việc shifing một cái gì đó là nhiều sự kiện điều khiển. Chúng tôi sử dụng một tin nhắn xe buýt để làm tất cả các thông tin liên lạc khác của chúng tôi và tôi muốn chuyển sang sử dụng điều này để điều hướng giữa các màn hình. Tôi không biết liệu điều đó có hữu ích hay không. màn hình của chúng tôi cho hầu hết các phần bao gồm các luồng công việc tuần tự.
- 1. Trong Rails, làm thế nào để bạn render JSON bằng cách sử dụng một khung nhìn?
- 2. Làm thế nào để cấu trúc một dự án trong Winforms bằng cách sử dụng mô hình MVP?
- 3. MVP trong Winforms
- 4. Làm thế nào để lưu trữ một CBPeripheral để sử dụng trong các khung nhìn khác
- 5. Làm thế nào để giao tiếp giữa các khung nhìn trong RCP Eclipse?
- 6. MVP, Winforms - EventHandlers hoặc Delegates
- 7. Mẫu MVC/MVP winforms Ứng dụng (không tầm thường)
- 8. Làm thế nào tôi có thể viết một bài kiểm tra đơn vị cho một lớp điều khiển sử dụng winforms cho các khung nhìn?
- 9. Làm thế nào để bạn tự động tạo các yếu tố khung nhìn Backbone?
- 10. Cách sử dụng UiHandler trong mẫu MVP
- 11. Liên lạc giữa các bộ điều khiển trong MVC/MVP
- 12. Làm cách nào để bạn tạo điều hướng trang web?
- 13. Làm cách nào để điều hướng ngăn xếp cuộc gọi trong Visual Studio bằng cách sử dụng bàn phím?
- 14. Làm thế nào để sử dụng các mô-đun nút (như MomentJS) trong các khung nhìn EJS?
- 15. Làm thế nào để bạn sử dụng "C" bên ngoài để gọi hàm C++ trong C
- 16. Menu điều hướng bằng cách sử dụng các mẫu Django
- 17. Có cách nào được khuyến nghị sử dụng mẫu Observer trong MVP bằng GWT không?
- 18. Cách sử dụng khung công tác Qt Model/View với khung nhìn Graphics View
- 19. Làm thế nào để phân lớp Điều khiển Điều hướng khi sử dụng bảng phân cảnh?
- 20. Làm thế nào để kiểm soát hiển thị có điều kiện các khung nhìn một phần trong ASP.NET MVC
- 21. Làm thế nào để giao tiếp giữa Python và C# bằng cách sử dụng XML-RPC?
- 22. làm thế nào để loại bỏ không gian ở giữa bằng cách sử dụng C#
- 23. Làm thế nào để sử dụng Windows On Screen Keyboard trong WinForms C#
- 24. Sự khác biệt giữa khung nhìn và khung giới hạn của khung nhìn + iPhone
- 25. Làm thế nào để bạn đi qua các thư mục bằng cách sử dụng python?
- 26. Làm thế nào để viết một ứng dụng WinForms lớn?
- 27. Làm thế nào để điều hướng đến một khung đóng với ReSharper?
- 28. Làm cách nào để triển khai các menu Điều hướng HTML có thể sử dụng lại?
- 29. Làm thế nào để kết hợp nhiều điều kiện để đặt một khung dữ liệu bằng cách sử dụng "OR"?
- 30. Làm thế nào để điều kiện trong các nhóm nhìn chung hoạt động trong .NET regex?
Và sau khi chế độ xem đã tạo một phiên bản giao diện ICustomerForm, bạn có thể chuyển người trình bày đến nó bằng cách sử dụng một số phương pháp như sau: Init (CustomerFormPresenter) – dzendras