Является ли использование DataTemplates обязательным для MVVM? - PullRequest
3 голосов
/ 06 июля 2011

Недавно мне объяснили, что MVVM можно сделать только «правильным способом», если я использую DataTemplates. Это действительно так?

Я бы сказал, что было бы неплохо использовать DataTemplates, если вы хотите многократно использовать "Представления".

Но если я собираюсь разработать приложение, которое имеет, скажем, от пяти до десяти различных страниц, и практически невозможно повторное использование определенных элементов управления (например, представление «Персона» используется только один раз, и оно весьма вероятно что это требование не изменилось), почему я не могу просто создать usercontrol и вставить его непосредственно в код?

Мне не хватает какого-то важного основного принципа MVVM?

Ответы [ 2 ]

3 голосов
/ 06 июля 2011

Главным преимуществом MVVM является отделение View от ViewModel (так что VM не знает о View) с помощью мощной функции связывания WPF.

Шаблоны данных - это просто еще одна функция, которая позволяет представлять данные по-разному.Как вы уже сказали, если у вас нет многократно используемого DataTemplate, не создавайте его, даже если вы действительно убедитесь, что он находится в ресурсах View, вы можете разделить его с более широкой группой, если хотите.

использование UserControl может быть полезно, когда вам нужно сделать что-то дополнительное (помимо простого представления данных), например, некоторую сложную проверку или дополнительные команды / кнопки

Я не думаю, что MVVM и DataTemplatesсвязаны в том же контексте.

0 голосов
/ 06 июля 2011

Для DataTemplate особой необходимости нет, у вас есть представление и модель представления, которая взаимодействует с привязками данных и событиями. Цель MVVM в WPF состоит в том, чтобы удалить код из представления, чтобы получить реальное представление только для презентации, а не грязный код позади хранилища. Независимость ViewModel от представления - еще одна цель, даже если она не всегда достигается.

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