2016-04-28 15 views
0

Ich habe VirtualizingStackPanel in mein Datagrid für On-Demand Load-Datensätze hinzugefügt, um die Ladezeit für die Anzeige aller Datensätze zu reduzieren.Warum VirtualizationStackPanel.IsVirtualizing in silverlight Datagrid eine Ausnahme ausgelöst?

<sdk:DataGrid VirtualizingStackPanel.VirtualizationMode="Recycling" VirtualizingStackPanel.IsVirtualizing="True" AutoGenerateColumns="False" 
          HorizontalAlignment="Center" Name="dgrGrid" Width="430" Height="270" Grid.Row="1" Margin="10,10,10,10" Loaded="dgrGrid_Loaded"> 

aber als ich versuchte, Daten auf dem Datagrid zu laden, habe diesen Fehler ... kann mir jemand zeigen, wo diese Fehler zu korrigieren? Danke im Voraus.

{System.Windows.Markup.XamlParseException: Set-Eigenschaft 'System.Windows.Controls.VirtualizingStackPanel.IsVirtualizing' hat eine Ausnahme. [Zeile: 37 Position: 123] ---> System.NotSupportedException: Schreibgeschützte Eigenschaft 'System.Windows.Controls.VirtualizingStackPanel.IsVirtualizing' kann nicht festgelegt werden. bei MS.Internal.XamlMemberInfo.SetValue (Zielobjekt, Objekt-Wert) bei MS.Internal.XamlManagedRuntimeRPInvokes.SetValue (XamlTypeToken Intype, XamlQualifiedObject & inObj, XamlPropertyToken inProperty, XamlQualifiedObject & inValue) --- Ende der Ausnahmestapelüberwachung ---

Antwort

0

Sie sollten die VirtualizingStackPanel.IsVirtualizing="True" als die Ausnahmemeldung entfernen besagt, dass es sich um eine read-only property ist. SL Datagrid verwendet bereits die Virtualisierung zur Leistungsoptimierung. Sie müssen also nur den Virtualisierungsmodus festlegen, den Sie verwenden möchten.

Ihr DataGrid wird dann aussehen ...

<sdk:DataGrid 
    VirtualizingStackPanel.VirtualizationMode="Recycling" 
    AutoGenerateColumns="False" 
    HorizontalAlignment="Center" 
    Name="dgrGrid" 
    Width="430" 
    Height="270" 
    Grid.Row="1" 
    Margin="10,10,10,10" 
    Loaded="dgrGrid_Loaded"> 
+0

hallo @Nkosi, ich habe gelöscht 'VirtualizingStackPanel.IsVirtualizing = "True"' aber scheint, wie meine Datagrid Ladezeit noch gleich ist. Ich muss fast 5 Minuten auf 2000 Datensätze warten. Nachdem ich dies in der XAML-Datei hinzugefügt habe, sollte ich irgendeine andere Funktion/einen anderen Prozess am Backend-Code hinzufügen? – jeliey

+0

2000 Datensätze in einem Datenraster ist viel und wird Ihre App verlangsamen. Sie sollten in Erwägung ziehen, die Seite Ihres Datenservers zu blättern und sie in Blöcken herunterzuladen. – Nkosi

+0

yup, das ist, warum ich diese virtualisierende Sache wie ein faules Laden machen möchte. Daher sollte es 50 erste Einträge anzeigen. Wenn der Benutzer die Maus nach unten scrollt, lädt das Datagrid die nächsten 50 Datensätze. Können wir das durch Virtualisierung erreichen? – jeliey