Announcement

Collapse
No announcement yet.

WPF Gebunde Listen - träges update

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • WPF Gebunde Listen - träges update

    Hallo liebe Leute,
    .. ich komm einfach nicht weiter wie ich die Performance steigern kann - hab das Problem aus der Anwendung bereits zwecks Lösungsfindung herausgelöst.
    Variante 1): WPF Listbox und im CodeBehind erzeuge ich (in der Anwendung aus einer DB) einige Textblöcke und füge sie der Listbox hinzu - z.B. 10000 Stück geht schnell...
    Variante 2): MVVM ItemsControl mit DataTemplate (mit einer Klasse für die anzubindenden Textblöcken) und ItemsSource mittels Binding gesetzt.
    Mehrere Anläufe hab ich versucht: ObservableCollection<>, List<> mit get, set mit PropertyChanged, SchattenList<> die nach dem Füllen an die gebunde List<> übergeben wird und danach ein explizites PropertyChanged...
    Fazit: die Zeit die benötigt wird um die Liste zur Darstellung zu bringen ist ca 3 mal so lange wie ohne dem MVVM Ansatz

    gibt´s da einen Trick? hab ich einen grundsätzlichen Fehler drinnen ?

    - danke für Eure Antworten

    Michael

  • #2
    Hallo,

    probiers mal mit dem VirtualizingStackPanel.

    Außerdem solltest du überlegen, ob es sinnvoll ist 10000 Stück in die UI zu laden. Ein Benutzer ist mit dieser Menge an Daten oft überfordert. Sollte es für eine Suche, etc. nötig sein, so kann die Suche auch an die Datenbank geleitet werden und nicht direkt im UI passieren.

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      - danke
      die 10.000 sind nur für den Test. Aber in der Anwendung merke ich bereits einen Unterschied bei ca. 50 Stück.
      Zwischen Reaktion sofort und MVVM mit kurzer Verzögerung ...
      das VirtualizingStackPanel muß ich mir mal anschauen...

      Michael

      Comment


      • #4
        .. also einen (selbst verursachten) Fehler hab ich gefunden.
        Bei der Version wo ich die Controls "manuell" erstellt hab, hab ich sie einfach in einem Stackpanel aneinander gereiht.
        Bei der gebundenen Lösung hab ich ein ItemsControl genommen. Mit einer Listbox geht es etwas zügiger allerdings hat die Listbox einen Nachteil. Wenn ich das übergeordnete Element in der TreeView selektiere, so bleibt die Treeview optisch "unabhängig" - der Background geht mit der Selektion nicht mit...
        laut erster googelei müßte ich da das Control umbauen...

        Michael

        Comment


        • #5
          falls mal wer drüber stolpert....

          ListBox nicht selektierbar und Background geht mit übergeordnetem Element mit:
          <ListBox...... IsHitTestVisible="False" Background="{x:Null}" ...
          hat mir den gewünschten Effekt gebracht....

          Comment

          Working...
          X