Событие двойного щелчка TreeView

1

Я хочу определить двойной щелчок даже в TreeView, чтобы я мог узнать, какой элемент в TreeView был выбран, и получить его название. То, как я пытаюсь получить его название, получает меня "MyProject.MenuItem". Как я могу ссылаться на выбранный элемент на дереве, убедиться, что это не корень, и получить его название? Что я сделал:

<TreeView Name="trvMenu" HorizontalAlignment="Left" Height="312" VerticalAlignment="Top" Width="200" MouseDoubleClick="TreeView_MouseDoubleClick" >
        <TreeView.ItemTemplate>
               <HierarchicalDataTemplate DataType="{x:Type local:MenuItem}" ItemsSource="{Binding Items}">
                     <TextBlock Text="{Binding Title}" />
               </HierarchicalDataTemplate>
        </TreeView.ItemTemplate>
</TreeView>

MessageBox показывает "MyProject.MenuItem", то, что я хочу сделать, - это не показать сообщение, но получить заголовок выбранного элемента treeview, после проверки, что это не корень

private void TreeView_MouseDoubleClick(object sender, RoutedEventArgs e)
    {
        if (sender is TreeViewItem)
            if (!((TreeViewItem)sender).IsSelected)
                return;
        TreeViewItem tviSender = sender as TreeViewItem;
        MessageBox.Show(trvMenu.SelectedItem.ToString());
    }
  • 0
    Таким образом, вам нужно получить доступ к дочерним элементам TreeView в коде позади?
  • 0
    stackoverflow.com/questions/24197633/...
Показать ещё 7 комментариев
Теги:
wpf
treeview

1 ответ

1
Лучший ответ

Измените обработчик двойного клика, как показано ниже. Вместо вызова ToString он получает доступ к свойству Title вашего класса MenuItem.

private void TreeView_MouseDoubleClick(object sender, RoutedEventArgs e)
{
    var menuItem = trvMenu.SelectedItem as MyProject.MenuItem;

    if (menuItem != null)
    {
        MessageBox.Show(menuItem.Title);
    }
}
  • 0
    Он не распознает «Заголовок» и не поддается никакому кастингу> _ <
  • 0
    хорошо, я сделал "MessageBox.Show (((MenuItem) trvMenu.SelectedItem) .Title);" но теперь он даже не показывает окно сообщения ..
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню