我正在首次實現MVP模式。我的應用程序是一個嚮導。有一種形式,並且嵌入了多個用戶控件。 每個控件都是一個視圖,每個視圖都有一個演示者。我正在嘗試實現被動MVP模式。演示者負責處理所有操作並更新視圖。在MVP中的用戶控件之間傳遞UI實體
問題是傳遞UI實體。我想從第一個視圖傳遞用戶輸入到第二個視圖,因爲第二個視圖需要處理它。
所有視圖都在Win Form上實例化。
任何幫助將不勝感激。
Regards
我正在首次實現MVP模式。我的應用程序是一個嚮導。有一種形式,並且嵌入了多個用戶控件。 每個控件都是一個視圖,每個視圖都有一個演示者。我正在嘗試實現被動MVP模式。演示者負責處理所有操作並更新視圖。在MVP中的用戶控件之間傳遞UI實體
問題是傳遞UI實體。我想從第一個視圖傳遞用戶輸入到第二個視圖,因爲第二個視圖需要處理它。
所有視圖都在Win Form上實例化。
任何幫助將不勝感激。
Regards
您可以創建一個包含所有您需要的實體的類。 當你打開一個新的窗口,你在構造函數中傳遞類時,你的數據已經被傳送。
我思考以下情形: 創建一個枚舉用於容納不同意見
public enum Views{
First,Second, Manager,Third,
}
您buttonstate
public enum ButtonState{Start,Next,Cancel,Back,}
創建一個枚舉創建,這將保存所有數據的類
public class MyData
{
//properties here
//Also have a default constructor
public MyData()
{
}
}
然後在您的表單中使用這個新項目:
Public Views MyViewState { get; set;}
Public ButtonState MyButtonState { get; set;}
Public MyData dataclass { get; set;}
Public Form1()
{
InitializeComponent();
MyViewState = Views.First;
MyButtonState = ButtonState.Start;
dataclass = new MyData(); //mostly at startup your class data is empty ...
ControlViews();
}
Public void ControlViews()
{
//Based on your Buttons you will do what each form is asked to do:
switch(MyButtonState)
{
case ButtonState.Start:
//Since this is your startup: you only need to show your next view and replace you MyViewState
MyViewState = Views.First;
///code for showing your view
Break;
case ButtonState.Next:
//Since this time you probably filled in data you need to know in which MyViewState you are
Switch (MyViewState)
{
Case Views.First:
//You want to keep your data
///Code for placing data into your dataclass
//After replacing the code, you then need to do some calculations and open the next view
///Code for calculations and placing this data in the form
///Code for opening the second view
MyViewState = Views.Second;
Break;
// you then need to do this for each MyViewState
}
Break;
}
}
使用這種類型的系統的好處是,所有的數據仍然在類中,你只需顯示/關閉你的意見。
這是我如何反擊這種方式。
我已經實現了相同。在這種情況下,我創建一個對象並將其傳遞給視圖的參數化構造函數。 但是,由於我的主要表單執行所有導航,因此我在太多通行證中登陸。 第一個視圖與主窗體談論關於 用戶輸入和主窗體,然後談到 第二視圖關於相同。 如果明天我想添加另一層, 說經理,那麼它會增加頭痛。 第一視圖將告訴經理, 經理談話的主要形式,然後 主要形式談判第二視圖 –
是否有任何其他標準的方式來實現相同? –