带有IsVirtualizing =“true”的WPF TreeView在改变焦点和滚动时跳过 [英] WPF TreeView with IsVirtualizing="true" jumps around when changing focus and scrolling

查看:151
本文介绍了带有IsVirtualizing =“true”的WPF TreeView在改变焦点和滚动时跳过的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经做了一个简单的例子来重现我遇到的 TreeView 问题。如果我在 TreeView 中选择一个项目,向下滚动,改变 Focus ,然后选择 TreeView 再次,列表开始跳跃。

这只会发生如果我有 VirtualizingStackPanel。 IsVirtualizing = 真。这是一个已知的问题吗?是否有工作?

所以重现:
$ b $ ol

  • 选择项目1在列表中。

  • 向下滚动至列表底部

  • 点击文本框顶部。

  • 在列表中选择第30项

  • 我使用.Net 3.5 SP1和I已经尝试了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 =Window1Height =300Width =300>
    <网格>
    < 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 1IsExpanded =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>
    < / TreeView>
    < / Grid>
    < / Window>

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

    大量修补程序。您是否启用了Windows Update?


    I've made a simple example to reproduce a problem I'm having with the TreeView. If I select an item in the TreeView, scroll down, change the Focus, and then select an item in the TreeView again, the list starts jumping around.

    This only happens if I have VirtualizingStackPanel.IsVirtualizing="True". Is this a known problem? Is there a work around?

    So to reproduce:

    1. Select Item 1 in the list.
    2. Scroll down to the bottom of the list
    3. Click the TextBox up top.
    4. Select Item 30 in the list

    I'm using .Net 3.5 SP1 and I've tried it for 64bit XP and Vista. I haven't tried it on other environments.

    Update: I've tested in .Net 4.0 Beta and the issue doesn't occur. Is there a hotfix somewhere?


    <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>
    

    Any help would be much appreciated!!!

    解决方案

    Well, it looks like a bug and there is a plenty of hotfixes. Do you have Windows Update enabled?

    这篇关于带有IsVirtualizing =“true”的WPF TreeView在改变焦点和滚动时跳过的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆