почему полилиния не перерисовывается, когда я изменяю ее коллекцию Points на другую коллекцию? - PullRequest
0 голосов
/ 28 июня 2010

Я все еще довольно новичок в Silverlight, так что, надеюсь, это элементарный вопрос: у меня есть ломаная линия, чье свойство Points (type: PointsCollection) связано с открытым элементом PointsCollection, Pts, в моем классе модели представления. Когда я добавляю / удаляю точки из ViewModel.Pts, ломаная линия корректно перерисовывается без проблем. Однако, если я изменю Pts на ссылку на другой, совершенно другой объект PointsCollection в моем классе модели представления, то ломаная линия не будет автоматически перерисовываться. Привязка Polyline.Points по-прежнему ссылается на ViewModel.Pts, но теперь ViewModel.Pts ссылается на ViewModel.OtherPts. Когда я переназначаю ViewModel.Pts на ViewModel.OtherPts, я хочу, чтобы ломаная линия автоматически перерисовывалась вместе с данными в ViewModel.OtherPts.

Есть ли какое-то событие или нюанс в системе свойств зависимостей, который я пропускаю?

Спасибо !!!

Кстати, я здесь не использую ObservableProperty или ObservableCollections, так как думал, что все это будет работать в рамках свойства зависимости + системы привязки данных.

1 Ответ

1 голос
/ 29 июня 2010

Является ли ваш PointCollection объектом DependencyProperty внутри объекта, производного от DependencyObject, или, альтернативно, находится ли он внутри объекта, реализующего интерфейс INotifyPropertyChanged, и вы вызываете событие PropertyChanged в установщике свойств Points?

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

...