Дизайн пользовательского интерфейса в стиле Metro: Pages vs Scenarios - PullRequest
1 голос
/ 15 ноября 2011

Я работаю над приложением в стиле metro для Windows 8, используя предварительный просмотр для академического проекта в университете. Мы должны использовать шаблон MVVM.

На главной странице у нас есть главное меню в стиле metro с кнопками. Каждая кнопка ведет к средству приложения (т. Е. «Показать мою библиотеку», «Показать избранное», ...), которое должно принадлежать другому представлению в соответствии с шаблоном MVVM.

По вашему мнению, следует ли нам создавать новую «страницу в стиле metro» для каждого просмотра или ожидать «сценария» для каждого варианта использования обновления главной страницы, как это представлено во многих примерах приложений? Другими словами, использование MVVM должно соответствовать 1: 1 между «простой старой Windows WPF» и «совершенно новыми страницами в стиле metro»?

1 Ответ

2 голосов
/ 15 ноября 2011

С MVVM дело в том, что нет жестких правил относительно того, что составляет представление, кроме того факта, что это средство, с помощью которого пользователь может просматривать данные ViewModel.

Представление не обязательно должно быть страницей, но может быть элементом управления.Таким образом, вы можете иметь одну страницу, на которой отображается много элементов управления View, если хотите.Довольно часто в качестве элементов управления отображаются «Виды», даже если они должны быть единственным элементом, отображаемым на странице, так как это позволяет мне более легко встраивать их в другие страницы позднее.

Шаблон MVVMчисто средство отделения пользовательского интерфейса от логики бизнес-кода.Класс ViewModel не заботится о том, как отображаются его данные, он просто предоставляет точки привязки, свойства и т. Д. Для отображения данных и точки запуска для функции кода.

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

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

Итак, вернемся к вашему первоначальному вопросу.Я бы попытался реализовать приложение таким образом, чтобы оно работало так, как ожидается для приложения Windows 8 Metro-Stryle.Это, очевидно, будет иметь отношение к тому, как вы будете кодировать, но при этом все же можно будет придерживаться шаблона MVVM.

...