WPF中TreeView控件如何获取选中的TreeViewItem对象?

mwvh253
2013-10-09 · TA获得超过3961个赞
知道小有建树答主
回答量:1026
采纳率:0%
帮助的人:2432万
展开全部
以下XAML代码实现绑定:<TreeView ……> <TreeViewItem ItemsSource="{Binding}" Header="大学列表"> </TreeViewItem> 只需给TreeView的DataContext赋一个University的对象集合,就可以自动显示: 然而,在写这个小程序时,我发现了一个问题:当TreeView绑定到数据集合后,TreeView.SelectedItem返回的不是我预想中的TreeViewItem,而就是数据对象本身(如University,Academy等)。这虽然方便了数据对象的提取,却带来其他的麻烦,比如,我可能需要将选中的节点加上红色标记以突出显示,或者是自动展开选中节点的子树,或者访问其父节点对象,这都需要获取TreeViewItem对象。我想了多种方法在TreeView本昌顷身的SelectedItemChanged事件中尝试取出选中节点对应的TreeViewItem对象,均无功而返。最后的解决方法很戏剧化,其实不根本需要钻牛角尖,非要在SelectedItemChanged事件中干这事。TreeViewItem本身有一个Selected事件,其参数e中就提供了需要的TreeViewItem对象。于是,解决方案很简单,在TreeView中响应TreeViewItem的附加事件Selected: <TreeView Name="treeView1" TreeViewItem.Selected="treeView1_Selected" ……> <T/reeView> 其事件代码如下: private void treeView1_Selected(object sender, RoutedEventArgs e) { //e.OriginalSource 就是TreeViewItem对象,你可以将其保存到窗体类的某个私有字段中,或者直接使用它,如下所示: } 搞定! 当前正在制作给企业培训所用的WPF教学PPT,对其特性进行了较多的探索与应用,谈些感触:WPF比原先的Windows Form灵轮迅扰活得多,有几个特性我实在是非常欣赏:(1)模板(包括控件模板与数据模板)(2)数据绑定(3)路由事件和依赖属性我个人认为,在Windows桌面应用领域,WPF迟早必将全面腊旦取代Windows Form。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式