Одно предложение объяснение MVVM в WPF?

Я слышал, что это следующая лучшая вещь в создании пользовательских интерфейсов WPF, но все существующие примеры имеют десятки строк кода - могу ли я получить Hello World для MVVM, который недвусмысленно объясняет, что это такое? Я также довольно новичок в C # /. Net, поэтому, возможно, укажу на некоторые ресурсы, которые тоже могут помочь?

Очень признателен!

Ответы на вопрос(11)

Одно предложение? Вот оно.

MVVM - это шаблон сегрегации пользовательского интерфейса, в котором Xaml (View) привязывается к фасаду (View Model), позволяя кишкам вашей программы (Model) избегать утечек в пользовательском интерфейсе слоя.

 20 июл. 2009 г., 14:18
+1 Ха-ха. Классический разработчик программного обеспечения. Вы дали пользователю именно то, о чем он просил, но оказывается, что это ему совсем не выгодно, и, вероятно, это не то, что он действительно хотел. (Заставил меня смеяться, хотя) = :)

шаблон, в котором интерфейс (вид) и сервер (модал) обмениваются данными (назад и вперед), используя общий медиатор (вид-модал).

но звезда не знает фанат. Фанат любит свою звезду так сильно, что, если звезда меняет себя (я имею в виду его стиль одежды), фанат меняет себя соответственно.

Теперь замените & quot; звездочку & quot; с & quot; ViewModel & quot; и «фанат» с & quot; Просмотр & quot; и прочитайте это еще раз.

 22 авг. 2016 г., 11:07
красивое объяснение .. легко понять начинающих, как я

aml-дружественным промежуточным объектом, чтобы получить ваши xaml-недружественные фактические данные.

Этот сайт имеет большую диаграмму, которая объясняет это.

В основном у вас есть 3 компонента:
1) Model - Модель данных вашего приложения. это довольно стандартно и так же, как любое приложение MVP или MVC.
2) View - XAML, который определяет представление / макет вашего приложения.
3) View Model - Поскольку WPF требует, чтобы представление прикреплялось к вещам определенным образом (например, требует, чтобы коллекции реализовывали INotifyCollectionChanged и тому подобное), обычно требуется, чтобы вы немного помассировали свои данные, чтобы получить их в форме, подходящей для отображения представления. Здесь код модели представления. Он упаковывает данные в модели представления, которые представление может легко отобразить. Это то, к чему будет привязан ваш взгляд XAML. Он должен реагировать на события из слоя модели и обновлять себя.

(Затем ваши контроллеры висят где-то сбоку - в идеале с помощью команд WPF - и вносят изменения в модель, которая запускает события для обновления модели представления)

(только половина шутит здесь)

которое помогло мне лучше разобраться в этом, было: «Могу ли я провести модульное тестирование своей бизнес-логики без пользовательского интерфейса?» Я думаю, что это должен быть вопрос, который вы задаете при изучении и проектировании с использованием концепций MVVM.

MVVM это все о будущем; Вы хотите отделить логику своего приложения от фреймворка, так что либо фреймворк может развиваться, и ваше приложение может не нуждаться в изменении, либо ваше приложение может развиваться, и вам не придется так сильно беспокоиться об изменении фактических аспектов пользовательского интерфейса.

На самом деле, MVVM - это доработка шаблона, который существует уже некоторое время. Я помню, как развивался шаблон, когда я работал в MFC. Для этого есть как минимум две причины. MFC или & lt; & gt; это довольно сложно, и смешивание конструкций MFC с логикой приложения делает приложение хрупким. Пример: замена списка со списком (или селектором в современных терминах) намного сложнее, если логика для поддержки содержимого списка / селектора сочетается с логикой для манипулирования самим списком / селектором.

MVVM - это переосмысление популярного шаблона Model-View-Presenter (MVP), специально разработанного для работы со средствами привязки данных, поставляемыми с WPF, для отделения логики приложения от дизайна пользовательского интерфейса.

Более длинное, более полезное объяснение:

Основная концепция MVVM - это разделение приложения WPF на отдельные компоненты, каждый из которых отвечает за получение информации на экране.

Во-первых, у вас есть модель. Это класс с очень ограниченными функциями, который обычно заполняется из какого-либо внешнего источника, такого как база данных или веб-сервис. Например:

public class MessageModel
{
    public string Message { get; set; }
}

Вдобавок ко всему, вы создаете слой ViewModel, здесь находится логика приложения, она уведомляет об изменениях в модели и обеспечивает согласованность данных. Реализуя интерфейс INotifyPropertyChanged, WPF дает возможность двухстороннего связывания данных между ViewModel и представлением:

public class MessageViewModel : INotifyPropertyChanged
{
     private MessageModel _model;

     public string Message
     {
          get { return _model.Message; }
          set
          {
              if (_model.Message != value)
              {
                  _model.Message = value;
                  OnPropertyChanged("Message");
              }
          }
     }
}

Наконец, у вас есть вид. Это файл xaml, который описывает макет элементов управления, используемых для отображения и редактирования данных в ViewModel:

<Canvas>
     <TextBox Text={"Binding Message"} />
</Canvas>

Причина, по которой вы идете на все эти усилия, заключается в том, что Модель очень легкая и легко передается через границы домена. Его просто отправить или получить из веб-сервиса или сопоставить с таблицей базы данных. ViewModel, с другой стороны, является сложным, но имеет мало зависимостей - ему не важно, откуда модель получает данные, а только то, что он там есть, и у него вообще нет понятия представления, что делает его очень тестируемым. (логика вашего приложения не зависит от пользовательского интерфейса для тестирования). Наконец, xaml хорошо разделен и может быть передан разработчику, который не должен ничего знать о логике приложения, только то, что ViewModel представит определенные данные под определенными именами. Эта инкапсуляция позволяет очень легко определять роли в больших проектах или создавать ограниченный пользовательский интерфейс для проверки логики, пока реальный обрабатывается.

 14 февр. 2012 г., 14:24
Пример IMO, MVVM без команд недостаточно полный
 23 июл. 2009 г., 13:47
Фантастический ответ. Спасибо за простое объяснение того, что может быть сложной темой
 25 нояб. 2012 г., 10:36
@MartinHarris вы сказали, что модель получена из веб-сервиса или базы данных? Где мы должны разместить этот логический код? По виду модель?

лизко к нему) уже. Я просто добавлю к этому, сказав, что если вы прошли базовый уровень и хотите получить пример того, как использовать MVVM в реальном приложении, которое имеет меню, панель инструментов, диалоги параметров, окна инструментов закрепления и т. Д. , Взгляни наSoapBox Core и этодемо с использованием SoapBox Core, Это с открытым исходным кодом, так что вы можете получить много идей.

«Шаблон представления для разделения проблем между пользовательским интерфейсом и его логикой».

Ваш ответ на вопрос