Подклассы ItemsControl или какая-то другая тактика? - PullRequest
1 голос
/ 09 августа 2011

Я пытаюсь создать пользовательский элемент управления. Для этого элемента управления потребуется привязка, которая работает как список или древовидная структура, где ее можно привязать к коллекции ObservableCollection, а также добавлять и удалять элементы по мере необходимости. Однако элементы, добавленные в коллекцию, не будут отображаться непосредственно в пользовательском интерфейсе. Они будут обработаны, а затем добавлены к элементам управления по мере необходимости. Например, если передана строка, представляющая полный путь к файлу, она будет добавлена ​​в TreeView, где каждый каталог является новым узлом.

Я попытался создать пользовательский элемент управления в качестве подкласса ItemsControl, и затем привязка работает, но я не могу понять, как узнать, когда элемент добавляется в элемент управления, чтобы я мог работать с ним. Я также рассмотрел добавление DependencyProperty типа ObservableCollection к элементу управления и затем привязку к нему в соответствии с этими инструкциями: http://msdn.microsoft.com/en-us/library/aa970563.aspx. Но его настройка таким образом не позволяет мне вообще привязываться к DependencyProperty.

На данный момент, мне все равно, какой метод я использую, чтобы добраться туда, до тех пор, пока я могу получить результаты из первого абзаца. Может кто-нибудь помочь мне с этим?

1 Ответ

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

Переопределив OnItemsChanged в вашем элементе управления, вы можете запускать любой код, который вам нужен, когда элемент добавляется или удаляется из ObservableCollection, привязанного к ItemsSource (во время заполнения свойства Items). Параметр этого метода - тот же NotifyCollectionChangedEventArgs, который вы получите, если подключитесь к событию OC напрямую.

Делая это таким образом, вы сможете выполнить то же действие, которое вы делаете с новым свойством OC, о котором вы думали, но продолжаете использовать встроенное свойство ItemsSource для привязки коллекции к элементу управления.

...