Хранить объект внутри TreeViewItem? - PullRequest
1 голос
/ 14 мая 2011

Я хочу сохранить экземпляр класса в TreeViewItem, чтобы мне не пришлось заставлять программу сортировать список возможных выбранных для него элементов.

То есть что-то похожее на

Bagel Poppyseed = new Bagel();    
TreeViewItem TreeViewPoppyseed = new TreeViewItem();
TreeViewPoppyseed.Bagel = Poppyseed;

Таким образом, чтобы при выборе TreeViewPoppyseed не было необходимости запускать другой метод для получения экземпляра Bagel, который у него есть. Это может быть как TreeView.SelectedItem.Bagel;

Что-то подобное уже существует?

Ответы [ 2 ]

4 голосов
/ 14 мая 2011

Для этого и используется свойство Tag, вы можете добавить туда свой объект и получить его позже.

Смотрите здесь: http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.tag.aspx

Кроме того, если ваша привязка данных к этому объекту, то она будет в свойстве DataContext.

1 голос
/ 14 мая 2011

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

в обработчике события:

TreeViewItem tvi = (TreeViewItem)sender;
Bagel bagel = (Bagel)tvi.DataContext;
//do whatever you want with bagel and tree view item
...