WPF TreeView с IsVirtualizing = “истинные” переходы вокруг при изменении фокуса и прокрутки

Я сделал простой пример для репродуцирования проблемы, которую я имею с TreeView. Если я выбираю объект в TreeView, прокрутите вниз, изменитесь Focus, и затем выберите объект в TreeView снова, список начинает переходить вокруг.

Это только происходит, если я имею VirtualizingStackPanel.IsVirtualizing="True". Действительно ли это - известная проблема? Вокруг существует ли работа?

Таким образом воспроизвести:

  1. Выберите Объект 1 в списке.
  2. Прокрутите вниз к нижней части списка
  3. Нажмите TextBox вершина.
  4. Выберите Объект 30 в списке

Я использую.Net 3.5 SP1, и я попробовал его за XP на 64 бита и 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>

Любая справка очень ценилась бы!!!

13
задан Dave Clemmer 8 September 2011 в 16:14
поделиться