2009-04-02 29 views
6

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

1

Đó 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).

+0

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

3

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.

1

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.

0

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ự.

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