在MVP的用户控件之间传递UI实体
本文关键字:UI 实体 之间 控件 MVP 用户 | 更新日期: 2023-09-27 17:53:25
我是第一次实现MVP模式。我的应用程序是一个向导。只有一个表单,其中嵌入了多个User控件。每个控件都是一个视图,每个视图都有一个呈现者。我正试图实现被动MVP模式。呈现者负责处理所有动作和更新视图。
问题是传递UI实体。我想把用户输入从我的第一个视图传递到第二个视图,因为第二个视图需要对它进行处理。
所有的视图都在Win Form中实例化。
任何帮助都将是非常感激的。
对
您可以创建一个类,其中包含您需要的所有实体。当打开一个新窗口时,您在构造函数中传递类,瞧,您的数据已被传输。
我正在考虑以下场景:创建一个可枚举对象来保存不同的视图
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()
{
}
}
然后在表单中使用以下new items:
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;
}
}
使用这种系统的优点是所有数据都保留在类中,您只需显示/关闭视图。
这是我对付这个的一种方法