MVVM: IView против привязки данных - PullRequest
0 голосов
/ 18 мая 2011

Я читаю о MVVM для того, чтобы принять это в представлениях моих слоев презентации.В идеале я хотел бы использовать один и тот же подход для WinForms, ASP.NET и SL.

Я столкнулся с двумя различными подходами и хотел бы собрать мнения по этим (и, возможно, другим):

«Представление с интерфейсом» и где представление связано с ViewModel

«Представление с интерфейсом»

В этом подходе у нас есть интерфейс IView, который содержит: - Установить / получить свойства длятипичные значения полей - события для действий, которые происходят в представлении

Способ, которым это работает, заключается в конкретной реализации IView, внедряемой во ViewModel.Затем ViewModel связывает события

.Затем он также «выталкивает» и извлекает значения полей через свойства.Он также осведомлен о том, что происходит на View посредством

событий.Элементы управления можно активировать и деактивировать через свойства IView.

Конкретные реализации представления просты в WinForms, не уверены в других технологиях и «смешиваемости» в SL.

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, который имеет несколько свойств, отражающих модель (значения данных / полей, состояния элементов управления пользовательского интерфейса и т. Д.)

Затем представление использует привязку данных для «представления» объекта.Значения полей (Модель) в элементах управления пользовательского интерфейса в представлении. Модель ViewModel также управляет состояниями элементов управления

через свойства, к которым привязаны данные. Действия в представлении передаются в ViewModel через методы в

* 1027.* ViewModel, к которому подключены.

Есть ли (неочевидные) плюсы и минусы каждого из этих методов?

1 Ответ

1 голос
/ 19 мая 2011

Может быть, вам на самом деле нужен только вид "предъявителя" свойств в winforms, в то время как в SL все подключения выполняются через xaml, что потребует меньше котельной плиты.Так что держите ваши модели представлений в общей базе кода, в то время как представление специфично для winforms.Для ASP.NET эти события модели представления не так приятны для подключения, если только вы не используете некрасивые элементы управления старой школы и обратные передачи.

Я действительно не вижу разницы между двумя подходами, оба будут работать с SL.

Будьте проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...