更改焦点和滚动时,带有IsVirtualizing =“true”的WPF TreeView会跳转

时间:2009-12-18 19:14:36

标签: wpf treeview scroll focus virtualizingstackpanel

我做了一个简单的例子来重现我对TreeView的问题。如果我在TreeView中选择了一个项目,请向下滚动,更改Focus,然后再次选择TreeView中的项目,列表就会开始跳转。

仅当我VirtualizingStackPanel.IsVirtualizing="True"时才会发生这种情况。这是一个已知的问题吗?有工作吗?

重现:

  1. 在列表中选择项目1。
  2. 向下滚动到列表底部
  3. 单击顶部的TextBox。
  4. 在列表
  5. 中选择项目30

    我正在使用.Net 3.5 SP1,我已经尝试过64位XP和Vista。我没有在其他环境中尝试过。

    更新:我已经在.Net 4.0 Beta中测试过,但问题并未发生。某处有修补程序吗?


    <Window x:Class="WpfApplication1.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition></RowDefinition>
                <RowDefinition></RowDefinition>
            </Grid.RowDefinitions>
            <TextBox Grid.Row="0"></TextBox>
    
            <TreeView Grid.Row="1"
                      VirtualizingStackPanel.IsVirtualizing="True"
                      VirtualizingStackPanel.VirtualizationMode="Standard"
                      >          
                <TreeView.Items>
                    <TreeViewItem Header="Header 1" IsExpanded="True">
                        <TreeViewItem.Items>
                            <TreeViewItem Header="Item 1" />
                            <TreeViewItem Header="Item 2" />
                            <TreeViewItem Header="Item 3" />
                            <TreeViewItem Header="Item 4" />
                            <TreeViewItem Header="Item 5" />
                            <TreeViewItem Header="Item 6" />
                            <TreeViewItem Header="Item 7" />
                            <TreeViewItem Header="Item 8" />
                            <TreeViewItem Header="Item 9" />
                            <TreeViewItem Header="Item 10" />
                            <TreeViewItem Header="Item 11" />
                            <TreeViewItem Header="Item 12" />
                            <TreeViewItem Header="Item 13" />
                            <TreeViewItem Header="Item 14" />
                            <TreeViewItem Header="Item 15" />
                            <TreeViewItem Header="Item 16" />
                            <TreeViewItem Header="Item 17" />
                            <TreeViewItem Header="Item 18" />
                            <TreeViewItem Header="Item 19" />
                            <TreeViewItem Header="Item 20" />
                            <TreeViewItem Header="Item 21" />
                            <TreeViewItem Header="Item 22" />
                            <TreeViewItem Header="Item 23" />
                            <TreeViewItem Header="Item 24" />
                            <TreeViewItem Header="Item 25" />
                            <TreeViewItem Header="Item 26" />
                            <TreeViewItem Header="Item 27" />
                            <TreeViewItem Header="Item 28" />
                            <TreeViewItem Header="Item 29" />
                            <TreeViewItem Header="Item 30" />
                        </TreeViewItem.Items>                    
                    </TreeViewItem>
                </TreeView.Items>
            </TreeView>
        </Grid>
    </Window>
    

    任何帮助都将非常感谢!!!

1 个答案:

答案 0 :(得分:1)

嗯,它看起来像一个bug,而且有一个plenty of hotfixes。您是否启用了Windows Update?