2009-10-08 73 views
2

我有一个有很多项目的排序树视图。当我添加一个新项目时,我希望新添加的项目被选中并显示在屏幕上。例如:如果我看到屏幕上的前10个项目,并且新项目被添加到第20个位置,则视图应该改变为呈现新添加的项目(它可以是屏幕上的第一个,最后一个或者在中间 - 没关系)。阅读博客文章后,我可以选择正常工作。请帮助我了解如何实现关于在屏幕上显示的所需功能。WPF TreeView专注于新增项目

卢卡斯Glaz

回答

4

我建议你看看this article,作者展示了如何使用附加的行为。这种行为,你可以在XAML做的一切:

<TreeView.ItemContainerStyle> 
    <Style TargetType="{x:Type TreeViewItem}"> 
    <Setter 
     Property="local:TreeViewItemBehavior.IsBroughtIntoViewWhenSelected" 
     Value="True" 
     /> 
    </Setter> 
    </Style> 
    </TreeView.ItemContainerStyle> 

凡IsBroughtIntoViewWhenSelected是附加属性。

+0

谢谢你的解决方案。它在关闭虚拟化时效果很好。当虚拟化打开时,我添加了一些项目,上下滚动一下,然后应用程序似乎冻结在某种循环中:当前选择的项目上下移动,无法停止。 – GUZ 2009-10-08 12:39:14

+0

我在以下地方找到了解决虚拟化问题的解决方案: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/31ea27c0-32bf-4fae-a806-204f06c198b8 – GUZ 2009-10-08 13:39:01

0

如果你已经得到了TreeViewItem对应于新添加的项目,所有你所要做的就是打电话给yourItem.BringIntoView()

+1

如何处理它,当我使用mvvm模式,我不直接处理TreeViewItems? – GUZ 2009-10-08 10:14:47