(Lviv community of .NET developers)

Робота з ItemsSource y WPF

October 8, 2007 02:52 by RredCat
При написанні механізму перетягуванні (Drag & Drop) чайлдів (Children)  в середині контролу, важливу роль грає утримання елемента у логічному дереві контрола ( ну щоб як мінімум унаcлідувані (inherit) атач (attached) проперті коректно працювали ;) ). Припустимо в темпліті контролу (в самих чайлдах, в чайлдах чайдів... ) знаходиться інший контрол, що наслідується від ItemsControl (на ваш смак). Нам потрібно приєднати до нього кілька чайлдів. Який механізм краще застосувати?

Якщо ми працюватимемо з Items то матимемо неприємний сюрприз - перед тим як додати до айтемзів, потрібно видалити з логічного дерева попереднього парента (унаслідуваним атач пропертям здоров'я це не добавить). Але якщо ми створимо колекцію у якій реалізовний інтерфейс IEnumerable і забіндаємо (Bind) її на ItemsSource (чи як мінімум присвоїмо) то ми зможем додавати, забирати чайди :).
Деякі особливості реалізаціїї;
Якщо пропертя ItemsSource не рівна null то ми з Items можимо працювати лиш в режимі read-only. Коли ми ItemsSource присвоїм null то ми знову зможем використовувати Items і вони будуть зразу після присвоєння порожніми.
Якщо нам потрібно динамічно міняти кількість айтемзів через ItemsSource то наша колекція крім інтерфейсу IEnumerable повинна підтримувати INotifyPropertyChanged. Непогано для цього підходить клас  ObservableCollection.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , ,
Categories: .NET | WinFx
Actions: Permalink | Comments (0) | RSSRSS comment feed

Add comment


(Will show your Gravatar icon)