Я хочу определить двойной щелчок даже в 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());
}
Измените обработчик двойного клика, как показано ниже. Вместо вызова 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);
}
}