c # обернуть объект модели, содержащий список для привязки MVVM - PullRequest
0 голосов
/ 03 сентября 2018

Допустим, у меня есть модельный объект

class ModelClass
{
    public List<Element> eList;

    public void MethodA()
    {
        doSomething();
    }
}

Я бы тоже хотел использовать этот объект в MVVM. Затем Viewmodel будет вызывать методы, подобные MethodA, для манипулирования данными, и элементы в eList будут обновлены. Есть ли способ сделать это, не делая eList ObservableCollection? Я хотел бы сделать это для того, чтобы использовать это ModelClass и в других местах без слишком большого количества кода.

1 Ответ

0 голосов
/ 03 сентября 2018

Если мы сравним Список и ObservableCollection , то оба будут реализованы из IList. Там нет большой разницы там. Наибольшее различие заключается в том, что ObservableCollection также реализует интерфейс INotifyCollectionChanged , который позволяет WPF связываться с ним.

Поэтому, если вы не хотите использовать List вместо ObservableCollection в своем классе модели, вам нужно реализовать класс с INotifyCollectionChanged :

class ModelClass:INotifyCollectionChanged
{
    public List<Element> eList;// call OnCollectionChanged() when you set/add/remove...the list).

    public void MethodA()
    {
        doSomething();
    }

    #region INotifyCollectionChanged Members

    protected void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
    {
        if (CollectionChanged != null)
            CollectionChanged(this, e);
    }

    public event NotifyCollectionChangedEventHandler CollectionChanged;

    #endregion

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