【发布时间】:2013-08-22 18:24:54
【问题描述】:
我希望能够在我的程序中右键单击选择TreeViewItem。以前,(在this question 中)我试图通过从我想要允许选择TreeViewItem 的任何地方调用SetSelectedItem() 方法来做到这一点。该问题的答案已编译并运行,但实际上并没有让 TreeViewItem 像我想要的那样被选中。
我一直在研究的This question 与这个问题几乎完全相同,但hierachicalDataTemplate 除外。我的TreeView 没有hierachicalDataTemplate,如果我的程序不需要它,我想避免它。
这是我正在编译的,但现在不影响更改...
//Sets selected item in TreeView and passes to MainWindowViewModel
private void SetSelectedItem()
{
MainWindowViewModel.SelectedItem = Tree_One.SelectedItem as TreeViewItem;
}
//**** This is the function this question is about -- It's Supposed to select item on RightClick
private void Tree_One_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
SetSelectedItem();
}
所以为了清楚起见,我右键单击的节点没有像预期的那样被选中。我做错了什么,我该如何解决?
更新:
我想我在玩弄下面的答案后知道问题出在哪里。我在这个问题中的代码实际上并没有改变选定的项目,它只是通过选择当前选定的项目来重申,重新选择它。如果有一种方法可以将所选项目实际更改为右键单击的项目,它将完美运行。关于如何做这样的事情的任何线索?
感谢您的帮助。
【问题讨论】:
-
在
MouseRightButtonDown的处理程序中尝试这样写:TreeViewItem Item = sender as TreeViewItem; if (Item != null) { Item.IsSelected = true; } -
尝试了,但没有成功。奇数。
标签: c# wpf treeview selecteditem right-click