Почему ObservableCollection скрывает INotifyPropertyChanged.PropertyChanged - PullRequest
3 голосов
/ 01 мая 2009

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

Если не считать создания объекта, который зависает от этого класса, который реализует INotifyPropertyChanged и содержит эти новые свойства, есть ли способ обойти это, что я пропускаю?

Ответы [ 2 ]

3 голосов
/ 01 мая 2009

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

ObservableCollection collection;

collection.PropertyChanged += ...;

Может произойти сбой, поскольку реализация PropertyChanged защищена. Вы можете, однако, сделать это:

ObservableCollection collection;

INotifyPropertyChanged iproperty = collection;

iproperty.PropertyChanged += ...;

Это должно работать, поскольку вы имеете дело с объектом как экземпляром интерфейса, а не просто обращаетесь к членам интерфейса через определение класса.

Я не сделал ни одного WPF, поэтому понятия не имею, действительно ли ObservableCollection реализует INotifyPropertyChanged, но если это так, то это должно сработать.

0 голосов
/ 01 мая 2009

ObservableCollection действительно реализует INotifyPropertyChanged, http://msdn.microsoft.com/en-us/library/bb460458.aspx, однако ...

Я отправил этот вопрос слишком рано, кажется, мое тестовое приложение, которое оспаривает мои предположения, работает.

...