WPF / MVVM - должны ли модели представления оставаться неизменными, и только модель меняется? - PullRequest
2 голосов
/ 20 декабря 2010

Я немного сомневаюсь, что такое «правильный путь».

У меня есть приложение с такими понятиями, как visual studio, поэтому я буду использовать это для объяснения:

У меня есть модель представления «решение» и модель позади.Модель представления отображается в «проводнике».

Я могу переключаться между ситуациями, когда «решение не загружено», на «решение загружено» и обратно.

И наконец мой вопрос:-):

Должен ли я сохранить объект модели представления и позволить ему отразить, что у меня загружен новый «объект решения»?Или я должен создать новый объект модели представления и позволить представлению связываться с новым объектом?

Спасибо за любые комментарии!

(И всем счастливого Рождества!)

Андерс, Дания

Ответы [ 2 ]

2 голосов
/ 20 декабря 2010

Ваша Viewmodel содержит состояние любых данных, связанных с пользовательским интерфейсом, которые не дальше в модели.

Один из способов ответить на такие вопросы, как ваш, - рассмотреть, какое поведениехотите в пользовательском интерфейсе и что необходимо привязать к некоторой информации о состоянии.Или, другими словами, в любое время, когда мне хочется написать какой-то код, который приведет к отображению или скрытию элементов пользовательского интерфейса, подумайте о том, как это сопоставить с булевой переменной.пользовательского интерфейса, который виден только тогда, когда у вас загружена модель.Их видимость может быть связана с логическим свойством в Viewmodel IsSolutionLoaded.

Возможно, вы захотите отключить некоторые вещи, если происходит обработка, у вас может быть свойство IsCompiling.Я использовал этот подход со свойством NotRunningthreadedProcessing, как показано ниже, которое позволяет отключать элементы управления, когда в Viewmodel существует объект синхронизации.

CNTL_WhiteLevel.SetBinding(ProgressBar.IsEnabledProperty, 
    new Binding("NotRunningThreadedProcessing"));

// and the C++/CLI property concerned
property bool NotRunningThreadedProcessing {
    bool get()
    {
        return mThreadedCommandSyncher == nullptr;
    }
};
1 голос
/ 20 декабря 2010

Что такое расположение ViewModel?

В целом

Модель представления - это локализованная версия фактической модели, и представление обновляется всякий раз, когда происходит изменение в его модели представления через DataBiding.

в вашем случае у вас есть 2 состояния.

1 - Ваш вид загружен

2- Ваш вид не загружен

так, я должен создать новый объект модели представления и позволить представлению связываться с новым объектом?

в моих мыслях, ДА

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