首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVVM: IView与数据绑定

MVVM: IView与数据绑定
EN

Stack Overflow用户
提问于 2011-05-19 03:22:31
回答 1查看 949关注 0票数 0

我正在阅读关于MVVM的文章,以便在我的表示层视图中采用这一点。理想情况下,我希望对WinForms、ASP.NET和SL使用相同的方法。

我遇到了两种截然不同的方法,我想在这些方法(可能还有其他方法)中收集意见:

“带接口的视图”以及视图被数据绑定到ViewModel的位置

‘带界面的视图’

在这种方法中,我们有一个接口IView,它包含:-设置/获取典型字段值的属性-视图上发生的操作的事件

其工作方式是通过将IView注入到ViewModel中的具体实现。然后,ViewModel将

事件。然后,它还通过属性“推”和“拉”字段值。它还可以通过以下方式了解视图上发生的情况

这些事件。可以通过IView属性激活和停用控件。

视图的具体实现在WinForms中很容易,不确定其他技术和SL中的“可混合性”。

代码语言:javascript
复制
public interface IMyView
{
  event EventHandler SomeActionClicked;

  Boolean CanEditField1 { get;set; }
  string Field1 { get;set; }
}

public class MyConcreteView: Form,IMyView
{
  public event EventHandler SomeActionClicked;

  public Boolean CanEditField1
  {
   get { return edtField1.Enabled; }
   set { edtField1.Enabled = value; }
  }
  public string Field1
  {
   get { return edtField1.Text; }
   set { edtField1.Text = value; }
  }

  private void btnAction_Click(object sender,EventArgs e)
  {
    SomeActionClicked(sender,e);
  }
}


public class ViewModel
{
  public ViewModel(IMyView view)
  {
    this.view = view;
    view.SomeActionClicked += SomeActionHandler;
  }

  private void SomeActionHandler(object sender,EventArgs e)
  {
    view.CanEditField = !view.CanEditField;  // Or whatever 'state' the ViewModel or Model is
    view.Field1 = DateTime.Now.ToString(...);
  }

  private IMyView view;
}

数据绑定视图

另一种方法是ViewModel,它具有几个反映模型的属性(数据/字段值、UI控件状态等)。

然后,View使用数据绑定在View上的UI控件中“显示”字段值(Model)。ViewModel还可以控制

通过数据绑定到的属性的UI控件状态。视图中的操作通过

挂接到的ViewModel。

这些方法有什么(不明显的)优点和缺点吗?

EN

回答 1

Stack Overflow用户

发布于 2011-05-19 15:35:14

也许你实际上只需要在winforms中将视图作为属性的“展示者”,而在SL中,所有的连接都是通过xaml完成的,这将需要更少的模板。因此,请将视图模型放在公共代码库中,而视图是特定于winforms的。对于ASP.NET来说,这些视图模型事件并不是很好地连接起来,除非你选择丑陋的老式webforms控件和回发。

我真的看不出这两种方法之间的区别,这两种方法都适用于SL。

保持简单。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6049948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档