我有一个有很多项目的排序树视图。当我添加一个新项目时,我希望新添加的项目被选中并显示在屏幕上。例如:如果我看到屏幕上的前10个项目,并且新项目被添加到第20个位置,则视图应该改变为呈现新添加的项目(它可以是屏幕上的第一个,最后一个或者在中间 - 没关系)。阅读博客文章后,我可以选择正常工作。请帮助我了解如何实现关于在屏幕上显示的所需功能。WPF TreeView专注于新增项目
卢卡斯Glaz
我有一个有很多项目的排序树视图。当我添加一个新项目时,我希望新添加的项目被选中并显示在屏幕上。例如:如果我看到屏幕上的前10个项目,并且新项目被添加到第20个位置,则视图应该改变为呈现新添加的项目(它可以是屏幕上的第一个,最后一个或者在中间 - 没关系)。阅读博客文章后,我可以选择正常工作。请帮助我了解如何实现关于在屏幕上显示的所需功能。WPF TreeView专注于新增项目
卢卡斯Glaz
我建议你看看this article,作者展示了如何使用附加的行为。这种行为,你可以在XAML做的一切:
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter
Property="local:TreeViewItemBehavior.IsBroughtIntoViewWhenSelected"
Value="True"
/>
</Setter>
</Style>
</TreeView.ItemContainerStyle>
凡IsBroughtIntoViewWhenSelected是附加属性。
如果你已经得到了TreeViewItem
对应于新添加的项目,所有你所要做的就是打电话给yourItem.BringIntoView()
。
如何处理它,当我使用mvvm模式,我不直接处理TreeViewItems? – GUZ 2009-10-08 10:14:47
谢谢你的解决方案。它在关闭虚拟化时效果很好。当虚拟化打开时,我添加了一些项目,上下滚动一下,然后应用程序似乎冻结在某种循环中:当前选择的项目上下移动,无法停止。 – GUZ 2009-10-08 12:39:14
我在以下地方找到了解决虚拟化问题的解决方案: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/31ea27c0-32bf-4fae-a806-204f06c198b8 – GUZ 2009-10-08 13:39:01