标签: mvp

如何使用C#WinForms在MVP中的视图之间导航?

据我所知,当我们使用MVP时,我们将所有表示逻辑移动到Presenter.但我们不想让Presenter了解视图实现,那么我们如何导航到应用程序中的另一个屏幕呢?您如何管理实际应用程序的应用程序流程?

c# mvp design-patterns winforms

7
推荐指数
1
解决办法
3303
查看次数

编程模式:MVC与MVP

我对这两个编程模式有点困惑:MVC和MVP.

它们之间的主要区别是什么?我一直在网上搜索,我做了两个例子,但是我更加困惑,因为在一些示例网页中,MVP使用2个以上的界面来将展示者与视图层进行通信(有些是甚至有完全空白的接口,只有声明),但在其他接口只需要两个接口就可以将数据从演示者传输到视图.应用该模式的正确方法是什么?

另一方面,我一直在研究MVC,但直到现在,我才意识到,也许我一直在以错误的方式应用模式.我有这个:

  • 模型:C#类,其行为类似于业务对象.
  • Controller:C#类,它使用模型对象来填充或操纵它们.
  • 查看:C#aspx页面显示模型对象; 控制器负责在操纵和/或填充数据后将模型对象发送到该层.

我希望你能清除我的怀疑.提前致谢.

model-view-controller mvp

7
推荐指数
1
解决办法
4140
查看次数

设置默认值 - 表示逻辑或业务逻辑?

我想知道是否将SelectList的默认值设置为表示逻辑或业务逻辑?例如,如果要求是没有位置就无法保存员工,但99%的时间选择的位置是特定项目 - 比如亚特兰大.因此,当显示新员工的输入屏幕时,应将位置SelectList默认为亚特兰大.我应该默认模型中还是视图模型中的位置?我意识到的一件事是单元测试变得很尴尬,因为在这两种情况下,我都被迫测试一个始终存在于生产中的位置,但我不能使用我自己的测试数据创建单元测试,除非"亚特兰大"是在测试中使用的一组位置中.一世'

asp.net mvp asp.net-mvc

7
推荐指数
1
解决办法
244
查看次数

有没有人在他们的项目中使用过JBoss Errai?

我正在搜索GWT Design来设置项目.我可以使用MVP(GWTP)JBoss Errai.我还没有决定.是否有人在其中一个经历过?

您可以给出这些框架的优缺点.

mvp gwt gwt-mvp errai

7
推荐指数
1
解决办法
2548
查看次数

Winforms中的MVP

我主要来自ASP.Net背景和一些MVC.我还做了一点Silverlight和MVVM,但是我现在要进入Winforms,我很少有经验,所以我想知道如何解决MVP问题.

典型的MVP示例显示了演示者设置视图属性(通过某种IView接口),具体视图将该属性值放入文本框中.而不是这种古老的方法,可以在MVP中使用INotifyPropertyChanged,如果是,如何?一个非常快速的例子非常有用!

如果我要创建一个实现INotifyPropertyChanged的模型,那么这不是更像MVVM吗?(即演示者更新模型,并通过INotifyPropertyChanged的魔力更新视图).然而,在我读过有关MVVM和Winforms的各个地方,人们都认为它不合适.为什么?我的理解是你可以对任何控件的属性进行数据绑定,那么Winforms缺少什么?我试图理解Winforms中数据绑定与WPF相比的缺点,以及为什么不能使用MVVM,因为它似乎比MVP更容易实现.

在此先感谢安迪.

data-binding mvp winforms

7
推荐指数
1
解决办法
3620
查看次数

Winforms MVP具有多个视图和一个演示者

我正在尝试按照模型视图展示器(MVP)模式在我的应用程序中开发项目管理系统.我的问题是,我看过很多MVP的例子,但我没有看到一个有一个Presenter和多个Views.例如,当用户打开项目时,可以通过树视图,数据网格和图表查看相同的项目数据.我该如何应对?

c# mvp design-patterns winforms

7
推荐指数
1
解决办法
2547
查看次数

MVP,Winforms - EventHandlers或Delegates

我已经在一些使用被动视图的WinForms应用程序中实现了MVP模式.我实现了一个包含Action <T>和Func <T>形式的属性和委托的接口,以在具体视图中连接UI事件并回调给演示者.

我即将开始一个新项目并对在线模式进行了一些研究,包括这里的模式的许多示例,并注意到所有使用EventHandler来通知演示者.

我真的不明白为什么会在这种情况下使用事件,因为我看到一个视图只有一个演示者.

我的问题是,这是为了与.Net框架如何使用事件保持一致,还是出于其他原因我没有看到?

这是我使用的模式的一个简单示例:

public interface IViewAbstraction
{
    public ModelData ModelData { set; }
    public Action<ModelData> ModelDataChangedCallback { set; }
}

public class SomeWinForm : Form, IViewAbstraction
{
    private Action<ModelData> modelDataChanged;
    private ModelData model;

    public ModelData ModelData
    {
        set { /* when this property changes, update UI */ }
    }

    public Action<ModelData> ModelDataChangedCallback
    {
        set { modelDataChanged = value; }
    }

    private void OnSomeWinformsEvent(EventArgs args)
    {
        if (modelDataChanged == null) throw new Exception();

        modelDataChanged(model);
    }
}

public …
Run Code Online (Sandbox Code Playgroud)

c# mvp winforms

7
推荐指数
1
解决办法
1874
查看次数

MVP winforms中的数据绑定

我有一个在MVP中实现的WinForms应用程序.我的表单有一个TextBox,我想将其Text属性数据绑定到Model中的属性.我不想在视图中引用模型.

在谷歌搜索后,我发现通过耦合模型和视图进行数据绑定是一个坏主意.我的样品初始化Model,View并且Presenter是如下.

class View : Form, IView
{
    public View()
    {
        InitializeComponent();
        new Presenter(this);
    }
}

class Presenter
{
    public Presenter(IView) : this.Presenter(this, new Model())
    {
    }

    public Presenter(IView view)
    {
    }
}

class Model : IModel
{
    public Model()
    {
    }

}
Run Code Online (Sandbox Code Playgroud)

目前我已经为每3个项目Model,ViewPresenter.View参考PresenterPresenter参考Model.任何人都可以指导我如何形成数据绑定到控件View到属性Model

编辑

我知道在Grid中做的事情.我们可以在演示者中将Datasource网格的属性分配给List(或类似的),如:

_view.DataSource = _model.ListOfEmployees;
Run Code Online (Sandbox Code Playgroud)

这将反映 …

c# data-binding mvp winforms

7
推荐指数
2
解决办法
7168
查看次数

摆脱GWT MVP样板

关于地点和活动+ MVP的文档,我必须为每个页面创建:

  • 一个地方
  • 一个活动
  • 一个标记化器(我必须实现标记化逻辑)
  • 演示者的界面(活动实现此界面)
  • 视图的界面
  • 视图实现
  • 用于视图实现的ui binder xml
  • app活动映射器中的节点
  • gin模块中的节点,用于绑定视图接口以查看实现

我创建了一个具有基本功能的应用程序(5页和导航栏),我已经有超过1500行代码和~40个文件.我认为这是完全不可维护的,但是我没有找到任何解决这个问题的方法.有几个框架(例如GWTP)实现了MVP,但它们也需要相同数量的样板.

我可以使用spring mvc或play在~200行中实现相同的功能.

我做错了什么,你会如何解决?

java mvp gwt gwt-mvp gwt-places

7
推荐指数
1
解决办法
711
查看次数

使用Android MVP Clean Architecture实现交互者

我正在构建一个Android应用程序,并希望以"干净架构"为基础,类似于以下作者的建议:

目前的架构:

查看(片段)< - >演示者< - >交互者< - >存储库

  • Fragment实现了View并创建了一个Presenter.
  • Presenter通过View界面引用Fragment.
  • Presenter 为要呈现的数据实现Interactor.Callback接口
  • Presenter创建并启动Interactor.
  • Interactor 获取和更新数据以在存储库的后台线程中执行业务逻辑.
  • Interactor为Repository中的DB/Server数据实现Repository.Callback.
  • Interactor在存储库中注册所需数据的更新.

在当前设计中,每个显示器有1个交互器(显示器可以包括多个片段,例如具有30个相同类型的片段的ViewPager)和每个片段1个呈现器.Presenter和Interactor没有框架依赖关系,可以轻松进行测试.

我主要关注的是Interactors/UseCases的实现及其与Presenters(MVP)或ViewModel(MVVM)的关系.

问题:

计划让Interactor首先获取显示所需的所有业务对象(BO).从数据层同步完成提取,并且每个接收到的BO都指向Presenter.这会导致延迟,直到视图中显示所有数据.

此外,它注册其感兴趣的BO的更新(与之前提取的相同),以通过演示者不断更新视图.


因此,我正在寻找如何在我的案例中设置Interactor的指南.上面提到的实现有一个任务,然后完成它,并且可以关闭Interactor后台线程.

在我的情况下,Interactor从数据层注册更新并等待处理它们,然后将数据发布到Presenter UI线程,因此只要有演示者监听就行.

这个功能是不同的,我正在寻找一个良好的做法,使其与"干净的架构"一起工作.

architecture mvp android mvvm android-databinding

7
推荐指数
1
解决办法
2570
查看次数