如何获得树的父(列表)查看项目?

时间:2011-07-14 09:17:35

标签: c# wpf treeview

我目前正在开展一个项目,该项目将以分层方式显示一些日期。我正在使用树(列表)视图(来自Ricciolo的视图),它具有3个层级。 TLV的ItemsSource是一个List。

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 个答案:

答案 0 :(得分:2)

你真的应该在你的应用程序中使用MVVM模式。有关详细介绍,请参阅this article,特别是在树视图的情况下。

目前,codeproject似乎有问题。您可以访问google cache

中的文章

答案 1 :(得分:1)

根据您处理的事件(MouseButtonDown?),e.OriginalSource很可能包含引发事件的TreeViewItem内的控件(可能是TextBlock)。您可能需要使用VisualTreeHelper向上移动VisualTree以查找封闭容器(TreeViewItem)。

答案 2 :(得分:0)

您使用as进行安全投射,因此e.OriginalSource不是TreeViewItem,设置断点并使用调试器并查看它是什么。

答案 3 :(得分:0)

尝试使用VisualTreeHelper获取父级。