#c# #object #silverlight-4.0 #treeviewitem
#c# #объект #silverlight-4.0 #treeviewitem
Вопрос:
Я хочу сохранить экземпляр класса в TreeViewItem, чтобы мне не приходилось заставлять программу сортировать список возможных выбранных для него элементов.
Т.е. что-то, что может выглядеть как
Bagel Poppyseed = new Bagel();
TreeViewItem TreeViewPoppyseed = new TreeViewItem();
TreeViewPoppyseed.Bagel = Poppyseed;
Таким образом, всякий раз, когда выбирается TreeViewPoppyseed, не было бы необходимости запускать другой метод, чтобы получить экземпляр Bagel, который у него есть. Это может быть просто как TreeView.SelectedItem.Bagel;
Что-то подобное уже существует?
Ответ №1:
Для этого и предназначено Tag
свойство, вы можете поместить туда свой объект и извлечь его позже.
Смотрите здесь:http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.tag.aspx
Кроме того, если ваши данные привязаны к этому объекту, то это было бы в DataContext
свойстве.
Ответ №2:
Вы можете создать шаблон данных для элемента древовидного представления, а затем вы можете получить доступ к свойству DataContext, чтобы получить связанный объект.
в обработчике событий:
TreeViewItem tvi = (TreeViewItem)sender;
Bagel bagel = (Bagel)tvi.DataContext;
//do whatever you want with bagel and tree view item