2014-09-23 3 views
0

Почти каждый учебник объясняет MVVM в WPF таким же образом: У нас есть объект (Person, Student, автомобилей и т.д.) - мы создадим класс модели для него, который будет нести только данные (это может также реализовать INotifyPropertyChange, IDataErrorInfo и еще что-то - не имеет значения сейчас), то мы создаем View-Model для этого класса, который будет запрашивать и/или сохранять наши сущности/файлы где-нибудь (скорее всего, с помощью команд) - наш View будет привязан к View-Model и вуаля.MVVM без «стандартной модели»

Скажем, у нас есть приложение, которое не будет, за разницу, работа с запрашивая/сохранение сущностей. Предположим, что она должна содержать кнопку, которая при нажатии будет загружать .exe-файл (в фоновом потоке) и запустит его. Мне любопытно, как бы вы приблизились к этому (с точки зрения архитектуры) - действительно ли вы создали папку/класс под названием «Модель» для этой программы? Что бы это содержало? Как я это вижу, у меня было бы две абстракции - одна для загрузки файла и одна для его запуска. Я бы ввел их в View-Model и вызвал их методы (через Command), и все. Или это должен быть класс модели, содержащий эти абстракции? Я знаю, что этот вопрос может показаться странным, но это то, что меня беспокоило какое-то время.

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

+0

MVVM действительно релевантно в сложных приложениях с бизнес-логикой, которые вы должны тщательно тестировать. Для простого приложения просто бросьте его в codebehind и двигайтесь дальше. – Will

ответ

0

Для примера вы предоставляете, как модель MVVM будет установка следующим образом. Предположим, что вы хотите загрузить некоторые данные и показать их в DataGrid, который является частью вашего представления. В View вы добавите DataGrid и Button, связать вашу кнопку, нажмите на ViewModel с помощью команды. Свяжите свой DataGrid через ItemSource некоторые ObservableCollection<T> в модели представления (модель вида должна реализовать INotifyPropertyChange). Теперь, когда пользователь нажимает кнопку, команда загорается, и вы можете пойти и заполнить вас ObservableCollection<T> данными с помощью загрузки, загруженные данные, привязанные к пользовательскому интерфейсу, будут автоматически отображаться ...

Надеюсь, это поможет.

Смежные вопросы