Responsive UI-Tipps

8

Ich möchte nur ein paar Tipps, wenn ich eine ansprechende Benutzeroberfläche erstellen möchte.

Ich weiß, wie man es benutzt:

%Vor%

Ich bin auf der Suche nach weiteren Tipps, wie verbindlichen Tipps ... Wenn ich über 50 Steuerelemente auf meiner Benutzeroberfläche habe, die aktualisiert werden müssen.

%Vor%

Bei der Verarbeitung von Daten im Hintergrund ... Best Practices, wenn es um langwierige Prozesse geht.

Was kann ich noch tun, damit meine Benutzeroberfläche zu 100% reagiert?

    
Willem 01.11.2011, 09:15
quelle

3 Antworten

16
  1. FastObservableCollection

  2. Bearbeiten PresentationSource

  3. Verwenden Sie PLinq oder Linq für mehrere Threads mit AsQueryable () zum dynamischen Filtern von Datenquellen als single-threaded und thread-unabhängig CollectionView .

  4. Readymade Gifs über Animation

  5. Vitalisierung von nicht virtualisierten Panels wie Canvas

  6. Deferred scrolling

  7. Trigger.Exnter \ Exit Aktionen für Animationen.

  8. BeginStoryboard.HandoffBehavior="Verfassen"

  9. Verwenden von Hardware über Software-Beschleunigung.

  10. Vermeidung von WindowStyle=None , AllowTransparency=true , Background=Transparent , TileMode

  11. Konfigurieren Sie RenderOptions.BitmpaScalingMode als LowQuality und aktivieren Sie das Caching. Aktivieren Sie PresentationFontCache Windows-Dienst.

  12. Verwenden Sie Staticresources über Dynamicresources

  13. Vermeiden Sie vererbbare Abhängigkeitseigenschaften. Vermeiden Sie auch schwere Operationen in Callbacks mit geänderten Eigenschaften.

  14. Verwenden Sie Freezable-Pinsel. Vermeiden Sie x:Name / Namescoping / Binding zu ihren Color propertys, damit sie die ganze Zeit freezable sein können.

  15. Legen Sie den Hintergrund des Rahmens fest, wenn er den Hintergrund eines visuellen Hintergrunds einkapselt. Ähnliches gilt, wenn Sie Brush als Hintergrund eines visuellen Objekts festgelegt haben und dann Brush.Opacity als Visual.Opacity angeben.

  16. Wertkonverter müssen einen minimalistischen Code haben. Benutze Binding.IsAsync und PriorityBinding wo immer anwendbar.

  17. Verwenden Sie standardmäßig Expanders mit IsExpanded=False .

  18. CompositionTarget.Rendering wird bei jedem Rendering-Zyklus ausgelöst und sollte nur bei Bedarf verwendet werden. Trennen Sie es bei jeder Gelegenheit.

  19. WPF DataGrid sollte die häufige Verwendung von Combobox-Spalten und editierbaren Template-Spalten vermeiden, da die combobx-Vorlagen versuchen, den ausgewählten Wert zu laden und den Anzeigepfad zu verwenden, indem sie von der Elementquelle von gesucht werden Combobox- und Vorlagenspalten sind undicht, wenn sie mit stark beobachtbaren Sammlungen verwendet werden.

  20. Verwenden Sie WPF Extedned Tooklit-basierte Shader-Effekte und neue Pixel Shader-APIs wie Unschärfe, Schatten.

Und viele mehr ...

    
WPF-it 01.11.2011, 09:47
quelle
1

Ich fand Lazy-Loading immer sehr hilfreich, um zu verhindern, dass große Datenmengen gleichzeitig geladen werden. Hier wird die meiste Zeit für die Inbetriebnahme benötigt, wenn große Datenmengen verarbeitet werden. Binden Sie Ihre Datensätze an virtualisierte Objektsteuerelemente, um den Arbeitsspeicher zu minimieren Fußabdruck (offensichtlich ist WPF Ihr Maßstab dafür, was im Gedächtnis notwendig ist).

Aber um ehrlich zu sein: Martin hat ganz recht ... 50+ datengesteuerte Steuerelemente, ... Mann, das ist verdammt höllisch; -)

Und Ihre Suche nach 100% Reaktionsfähigkeit, denke ich, bedarf einer weiteren Erklärung. Nach meinem Verständnis können Anwendungen reaktionsfähig sein oder nicht (Benutzereingaben nehmen / Ausgaben produzieren, statt nichts zu tun). Zielen Sie auf die beste Leistung? Oder ist es ein Rorlock-Szenario, dem Sie gegenüberstehen? Lassen Sie den Benutzer andere Datensätze bearbeiten, während Sie lange Aufgaben an bestimmten Datensätzen ausführen.

Ich denke einiges von dem, was AngelWPF erwähnt hat, findet sich in diesem Artikel zur Prioritätsbindung.

    
Sebastian Edelmeier 02.11.2011 07:15
quelle
0

50+ Steuerelemente auf einer einzelnen Benutzeroberfläche klingen so, als ob sie von einem Coder entworfen worden wären, und die Optimierung des Codes würde das eigentliche Problem wahrscheinlich nur für eine Weile ausgleichen. Das Beste daran ist, die Funktionalität auf verschiedenen Bildschirmen zu trennen oder die weniger verwendeten Informationen hinter den Menüs zu verstecken.

    
MLT 01.11.2011 09:28
quelle

Tags und Links