Распространение изменений в модели для просмотра в Silverlight - PullRequest
1 голос
/ 07 июля 2010

в моем приложении Silverlight 4 у меня есть коллекция ObservableCollection, которую я связываю с двумя разными списками. Элементы списка, отображающие содержимое объекта MyClass. Когда я добавляю элемент в коллекцию ObservableCollection, новый элемент отображается в обоих списках правильно.

Я установил режим связывания в два направления, чтобы при редактировании элементов списка автоматически обновлялась модель. Это работает до сих пор. Моя проблема в том, что содержимое другого списка не обновляется с обновленной моделью. Добавление нового элемента будет правильно отображаться в другом списке, но обновления содержимого (которое я проверил) не будет.

Любые идеи, как этого достичь: содержимое другого списка должно обновляться автоматически, когда я обновляю содержимое в одном списке.

Заранее спасибо,
Frank

Ответы [ 2 ]

2 голосов
/ 07 июля 2010

Чтобы понять, что сказал Люк, вашему классу необходимо реализовать INotifyPropertyChanged, а вашим свойствам нужно выбросить событие PropertyChanged в их установщики.

public class MyClass : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged; // This may be named wrong

    private string _myString = null;

    public string MyString
    {
        get { return _myString; }
        set
        {
            if(value == _myString)
                return;
            _myString = value;
            var eh = PropertyChanged;
            if(eh != null)
                eh(this, new PropertyChangedEventArgs("MyString"));
        }
    }
}

Свойство MyString уведомит пользовательский интерфейс об изменении, что приведет к обновлению привязки.

1 голос
/ 07 июля 2010

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

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