【问题标题】:TreeView double click eventTreeView 双击事件
【发布时间】:2014-06-16 06:27:02
【问题描述】:

我什至想在 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”,我要做的不是显示消息框,而是获取所选树视图项的标题,检查后它不是根

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());
    }

【问题讨论】:

  • 那么你需要在代码隐藏中访问 TreeView 的子元素吗?
  • 是的,子元素是在运行时添加的,我想在代码隐藏中获取它们的标题。 @罗伯特兰登
  • 前段时间我遇到过类似的问题。查看链接,让我们知道它是否适合您。 stackoverflow.com/questions/11826272/…
  • 我不明白如何使用它:\ @RobertLangdon

标签: c# wpf treeview


【解决方案1】:

更改您的双击处理程序,如下所示。它不是调用ToString,而是访问您的MenuItem 项目类的Title 属性。

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

    if (menuItem != null)
    {
        MessageBox.Show(menuItem.Title);
    }
}

【讨论】:

  • 它不识别“标题”并且不屈服于任何铸造>_
  • 好的,我做了“ MessageBox.Show(((MenuItem)trvMenu.SelectedItem).Title); ”但现在它甚至不显示消息框..
  • 只需在 MessaBox.Show 行上放一个断点并检查 trvMenu.SelectedItem 并确保它是您期望的对象
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-09
  • 2017-08-29
  • 1970-01-01
  • 2014-07-23
  • 2018-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多