Привязка к свойствам, определенным в базовых классах в Silverlight - PullRequest
0 голосов
/ 03 августа 2011

Допустим, у меня есть три класса: BaseClassA, BaseClassB, ClassC.Поток следующий: ClassC: BaseClassB: BaseClassA.ClassC является ViewModel, и я связываю некоторое свойство (назовем его SomeProperty), которое определено на уровне BaseClassA.Когда я пишу в представлении ItemsSource = {Binding SomeProperty}, привязка не выполняется.Привязка отлично работает, когда SomeProperty определен на уровне BaseClassB, или если я определю его на уровне ClassC, например SomeProperty {get {return base.SomeProperty}} Такое поведение по своему замыслу или я что-то упустил?

[upd] Свойствотипа DomainCollectionView.Я обновляю свойство в методе OnLoadEntitiesCompleted экземпляра BaseClassA.

Ранее у меня были только объекты ClassC и BaseClassA, и все действительно работало идеально.После введения объекта BaseClassB среднего уровня привязка перестала работать.Это что-то особенное для DomainCollectionView

Я не могу поделиться кодом, поэтому я опубликую значимые части.Если этого недостаточно, я готов поделиться еще:

public abstract BaseClassA
{
protected DomainCollectionView CollectionView {get;}
}

public abstract BaseClassB : BaseClassA

public ClassC : BaseClassB

Ответы [ 3 ]

2 голосов
/ 03 августа 2011

Предположим, что ваш пример точен: Ваша собственность не публичная , поэтому привязка не выполняется.

Ничего общего с вашим наследством.

Измените его на:

public DomainCollectionView CollectionView {get;}

и повторите попытку.

0 голосов
/ 03 августа 2011

Зачем вам реализовывать ClassC: SomeProperty, который делает только делегирование свойства с одинаковым именем в базовом классе? Единственный способ привязки данных разрыва к свойствам, определенным в базовых классах, - сделать их закрытыми или защищенными.

0 голосов
/ 03 августа 2011

Вы что-то упустили.Привязка к свойствам в базовых классах прекрасно работает в SL.Например, свойство IsEnabled определено в UIElement, который является предком 5-го уровня Button.

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