Коллекции Must, представленные моделью представления, реализуют ObservableCollection <T>с шаблоном MVVM. - PullRequest
0 голосов
/ 07 февраля 2012

Недавно я пытался реализовать шаблон проектирования MVVM, но столкнулся с двумя проблемами, которые не могу решить:

  1. Как я вижу, я должен использовать ObservableCollection в моих Model классах, чтобы передать его в ModelView в View . Я надеюсь, что я ошибаюсь, потому что View не должен влиять на структуру Model , и я не должен ограничиваться этим конкретным типом коллекции.

  2. Есть ли способ сделать двустороннее связывание со списком элементов типа значения?

Пример: * * тысяча двадцать-пять

public ObservableCollection<bool> MyBooleans
{
    get { return m_booleans; }
}
<ListView ItemsSource="{Binding MyBooleans}" ...>
    <ItemTemplate>
        ...
        <CheckBox IsChecked="{Binding}" ... />
        ...
    </ItemTemplate>
</ListView>

1 Ответ

8 голосов
/ 07 февраля 2012

Ваша модель представления должна представлять коллекции, которые изменяются (т.е. имеют элементы, добавленные / удаляемые) как ObservableCollections (или некоторый другой класс, который реализует INotifyCollectionChanged).Это не означает, что вашей модели необходимо предоставить коллекцию, которая реализует этот интерфейс.

Ваша модель представления фактически является адаптером вашей модели, что делает ее более легко привязываемой.Например, если ваше приложение отображает твиты, ваш сервисный уровень может вернуть модель, представляющую собой список твитов.Ваша модель представления затем вставит их в наблюдаемую коллекцию, что приведет к обновлению вашего представления.Затем вы можете получить новые твиты через ваш сервис в будущем (используя таймер), они снова будут возвращены в виде списка.Ваша модель представления затем добавит эти твиты в свой ObservableCollection, в результате чего новые элементы будут видны в представлении.

...