2009-12-18 10 views
13

Ho fatto un semplice esempio per riprodurre un problema riscontrato con lo TreeView. Se seleziono un articolo nel TreeView, scorri verso il basso, cambia il Focus, quindi seleziona nuovamente un elemento nello TreeView, l'elenco inizia a saltare.WPF TreeView con IsVirtualizing = "true" salta quando si cambia messa a fuoco e scorre

Questo succede solo se ho VirtualizingStackPanel.IsVirtualizing="True". È un problema noto? C'è un lavoro in giro?

Quindi, per riprodurre:

  1. Selezionare la voce 1 nella lista.
  2. Scorrere verso il basso nell'elenco
  3. Fare clic sul TextBox in alto.
  4. Selezionare la voce 30 nella lista

sto utilizzando .Net 3.5 SP1 e ho provato per 64bit XP e Vista. Non l'ho provato su altri ambienti.

Aggiornamento: Ho provato in. NET 4.0 Beta e il problema non si verifica. C'è un hotfix da qualche parte?


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

Qualsiasi aiuto sarebbe molto apprezzato !!!

+2

Questo è un bug nifty! Sembra che questo sia in circolazione da un po 'e Marco Zhou lo ha esaminato nei forum MSDN. Il suo lavoro proposto non risolve comunque il problema: http://bit.ly/4nJUme – rmoore

+0

Sembra che la correzione funzioni davvero, ho avuto un errore di compilazione e quindi non stava usando le nuove classi quando l'ho testato. – rmoore

+0

Ho avuto lo stesso problema in Silverlight Treeview – nipiv

risposta