我目前正在开展一个项目,该项目将以分层方式显示一些日期。我正在使用树(列表)视图(来自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”将始终为空。
有人可以指出我正确的方向吗?
提前谢谢,问候答案 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获取父级。