2009-12-18 7 views
13

Ich habe ein einfaches Beispiel erstellt, um ein Problem zu reproduzieren, das ich mit der TreeView habe. Wenn ich ein Element in der TreeView auswählen, scrollen Sie nach unten, ändern Sie die Focus, und wählen Sie dann erneut ein Element in der TreeView, beginnt die Liste herumspringen.WPF TreeView mit IsVirtualizing = "true" springt herum, wenn Fokus und Scrollen geändert werden

Das passiert nur, wenn ich VirtualizingStackPanel.IsVirtualizing="True" habe. Ist das ein bekanntes Problem? Gibt es eine Arbeit?

  1. Select Item 1 in der Liste:

    So zu reproduzieren.

  2. Scrollen Sie bis zum Ende der Liste
  3. Klicken Sie oben auf die TextBox.
  4. Wählen Sie Position 30 in der Liste

Ich verwende .NET 3.5 SP1 und ich habe es für 64-Bit-XP und Vista ausprobiert. Ich habe es nicht in anderen Umgebungen versucht.

Update: Ich habe in .NET 4.0 Beta getestet und das Problem tritt nicht auf. Gibt es irgendwo einen Hotfix?


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

Jede Hilfe wäre sehr geschätzt !!!

+2

Dies ist ein raffinierter Fehler! Es sieht so aus, als ob es schon eine Weile her ist und Marco Zhou hat sich in den MSDN-Foren damit beschäftigt. Seine vorgeschlagene Arbeit löst das Problem jedoch nicht: http://bit.ly/4nJUme – rmoore

+0

Sieht so aus, als ob der Fix tatsächlich funktioniert, ich hatte einen Build-Fehler und daher verwendete ich die neuen Klassen nicht, als ich sie getestet habe. – rmoore

+0

Ich hatte das gleiche Problem in Silverlight Treeview – nipiv

Antwort

1

Nun, es sieht aus wie ein Fehler und es gibt eine plenty of hotfixes. Haben Sie Windows Update aktiviert?