2017-02-28 1 views
0

Ich habe Fenster mit mehreren UserControl s innen. Alle Steuerelemente sind zu Beginn unsichtbar, aber der Benutzer kann zwischen ListBox wählen, welches Steuerelement sichtbar sein soll. Jeder UserControl enthält DataGrid mit einigen Daten. Jedes Mal, wenn sich die visibility der UserControl in Visible ändert, scheint DataGrid den Inhalt/die Zeilen wiederherzustellen. Ich möchte das verhindern, weil es die Leistung schlecht trifft.Wie verhindert man, dass DataGrid Zeilen neu erstellt, nachdem sich ihre Sichtbarkeit geändert hat?

Wie kann verhindert werden, dass DataGrid s Zeilen immer dann neu erstellt, wenn sich ihre Sichtbarkeit ändert?

Unten ist das Beispiel:

<Window x:Class="Core.View.Windows.MainWindow" ...> 
    <Window.DataContext> 
     ... 
    </Window.DataContext> 
    <Window.Resources> 
     ... 
    </Window.Resources> 
    <Grid> 

     <ListBox ...> 
      ... 
     </ListBox> 

     <UserControl1 Visibility="{SomeBindingWithConverter}" /> 
     <UserControl2 Visibility="{SomeBindingWithConverter}" /> 
     <UserControl3 Visibility="{SomeBindingWithConverter}" /> 
     <UserControl4 Visibility="{SomeBindingWithConverter}" /> 
     <UserControl5 Visibility="{SomeBindingWithConverter}" /> 
    </Grid> 
</Window> 
+0

für Geschwindigkeit suchen Was Sie denken lässt, dass die Zeilen wieder aufgebaut werden? Bitte geben Sie ein Repo an, das dieses Verhalten demonstriert: http://stackoverflow.com/help/mcve. – mm8

+0

@ mm8 Ich könnte falsches Wort verwendet haben, aber ich kann sehen, dass Zeilen nicht im Raster sind (sind nicht sichtbar?), Wenn ich zu 'UserControl' wechsele und kurz danach erscheint, wenn' IsAsync' von 'ItemsSource'. – user2475983

Antwort

0

Verwenden Virtualisierung, wenn Sie sich mit der DataGrid

<DataGrid EnableRowVirtualization="True" 
      EnableColumnVirtualization="True" 
      VirtualizingStackPanel.VirtualizationMode="Standard" 
      VirtualizingStackPanel.IsVirtualizing="True"> 
</DataGrid> 
+0

Das ist nicht der Fall. Ich möchte Zeilen laden, wenn sie nicht schnell genug geladen werden, wenn sich die Sichtbarkeit von 'DataGrid' ändert. – user2475983

Verwandte Themen