Как получить родителя Tree (List) View Item? - PullRequest
1 голос
/ 14 июля 2011

Я сейчас работаю над проектом, который должен отображать некоторую дату в иерархическом порядке.Я использую вид дерева (список) (тот из Ricciolo), который имеет 3 иерархических уровня.ItemsSource TLV - это список.

1st level = typeof(Game)
2nd level = typeof(Partner)
3rd level = typeof(Channel)

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

TreeViewItem myItem = e.OriginalSource as TreeViewItem;
if ( myItem != null ) {
    ItemsControl parent = ItemsControl.ItemsControlFromItemContainer( myItem );
    if ( parent != null ) {
    //Put your logic here.
    }
}

Проблема здесь в том, что независимо от того, какой элемент я выберу, «myItem» всегда будет нулевым.

Может кто-нибудь, пожалуйста, укажите мне справанаправление?

Спасибо заранее, привет

Ответы [ 4 ]

2 голосов
/ 14 июля 2011

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

В настоящее время, кажется, у кодапроекта есть проблема.Вы можете получить доступ к статье в кеш Google

1 голос
/ 14 июля 2011

В зависимости от того, какое событие вы обрабатываете (MouseButtonDown?), e.OriginalSource, скорее всего, содержит элемент управления в TreeViewItem, который вызвал событие (вероятно, TextBlock).Возможно, вам придется немного пройтись по VisualTree, используя VisualTreeHelper , чтобы найти вмещающий контейнер (TreeViewItem).

0 голосов
/ 14 июля 2011

Попробуйте получить родителя с помощью VisualTreeHelper.

0 голосов
/ 14 июля 2011

Вы используете безопасное приведение с использованием as, поэтому e.OriginalSource не является TreeViewItem, установите точку останова, используйте отладчик и посмотрите, что это такое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...