WPF中如何获得TreeviewItem

buandehai 2010-07-21 04:19:50
当 WPF中的Treeview绑定到数据集合后,TreeView.SelectedItem返回的不是我预想中的TreeViewItem,而是数据对象本身.

如果我想获得TreeviewItem对象应该怎么办呢?
...全文
633 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
leon0905 2010-07-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 buandehai 的回复:]
引用 1 楼 leon0905 的回复:
LZ注意结贴率,其实这种问题已经说过多次了,本来在WPF中就不要想法设法去获得界面元素,绑定放着给你看得?需要获得的属性都可以通过绑定的方式,绑定到后台对象的属性上,然后通过这些属性来进行各种需要的操作


不好意思,刚学WPF,不太明白你说的。

我其实就是想在后台控制TreeView中的选择项,并将焦点移动到相应的TreeViewItem项……
[/Quote]
控制选择项的话可以把treeviewitem的isselected属性绑定后台model的属性,IsFocused是只读属性,可以通过trigger配合setter来设置
buandehai 2010-07-22
  • 打赏
  • 举报
回复
书上说 ContainerFromElement 这个方法可以获取ListBox中的一项,

可是我用下面的代码却获得不了TreeView中的一项,
TreeViewItem treeViewItem = (TreeViewItem)treeViewMain.ContainerFromElement((DependencyObject)treeViewItemRoot);


不知道是哪里写错了!
buandehai 2010-07-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jv9 的回复:]
参考下面代码:

C# code

if (myTreeView.SelectedItem != null)

{

TreeViewItem selectedTVI = myTreeView.Tag as TreeViewItem;

// 你的代码

}
[/Quote]

这个需要给Tag赋值的吧!
buandehai 2010-07-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 leon0905 的回复:]
LZ注意结贴率,其实这种问题已经说过多次了,本来在WPF中就不要想法设法去获得界面元素,绑定放着给你看得?需要获得的属性都可以通过绑定的方式,绑定到后台对象的属性上,然后通过这些属性来进行各种需要的操作
[/Quote]

不好意思,刚学WPF,不太明白你说的。

我其实就是想在后台控制TreeView中的选择项,并将焦点移动到相应的TreeViewItem项上,不知道有什么办法。
badi888 2010-07-22
  • 打赏
  • 举报
回复
也可以这样一试 在treeview的SelectedItemChanged事件中获得

private void treeView1_SelectedItemChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<object> e)
{

TreeViewItem tviEmp = e.NewValue as TreeViewItem;
//你的代码
}
jv9 2010-07-22
  • 打赏
  • 举报
回复
参考下面代码:

if (myTreeView.SelectedItem != null)

{

TreeViewItem selectedTVI = myTreeView.Tag as TreeViewItem;

// 你的代码

}

leon0905 2010-07-21
  • 打赏
  • 举报
回复
LZ注意结贴率,其实这种问题已经说过多次了,本来在WPF中就不要想法设法去获得界面元素,绑定放着给你看得?需要获得的属性都可以通过绑定的方式,绑定到后台对象的属性上,然后通过这些属性来进行各种需要的操作
在Windows系统,notepad.exe(记事本)是一个“经典的”、“简洁的”文本编辑器。这个软件,没有华丽的外观,也没有繁杂的功能,仅仅是一个文本编辑小软件。虽然经过Windows系统数十年的变换,但它却保持着永恒姿态,数十年来几乎不曾改变过。曾经,VS的经典DEMO,就有它的身影,一个新建的项目,就藏有一个新建的“记事本”。然而,在WPF的项目,“记事本”却消失的无影无踪,也许是很容易实现,也许是为了革新,而不愿再传承“经典”。确实,使用WPF技术再次让“记事本”复活,确实也是一件非常容易的事情。但是,如果,使用WPF技术,再搭配当下非常流行的MVVM模式呢?复活“记事本”的难度却陡然上升至很多WPF程序员为之默默叹气。而,MVVM模式是掌握WPF的最顶级技术,MVVM模式拥有的无尽的优势,让WPF相对于过往的编程模式来说,是一种革命性的创新,从而也成为大WPF项目必须的模式。但,学习难度。。。。。。在这个《WPF记事本开发详解》的课程,赵老师带领你在WPF,从零开始一步步构建MVVM模式,直到让你亲自以WPF+MVVM的方式,让这个经典的“记事本”软件从你的手“复活”。在课程,赵老师会详细讲解WPF和MVVM的各种技巧,让你从此爱上WPF+MVVM编程。

8,737

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧