2016-07-18 10 views
0

Ich habe eine WPF-Anwendung, um eingehende Bytes aus einem seriellen Stream anzuzeigen. Ich möchte diese Bytes in einem Benutzersteuerelement anzeigen, das Änderungen zulässt (d. H. Bytewertänderungen bedeuten Hintergrundfarbenänderungen, um Benutzer zu warnen, der Benutzer wählt Daten als Hex/Dezimal/Binär aus). Bisher hat ich eineViewModel oder ValueConverter für WPF View

ObservableCollection<ByteDisplay> 

wo ByteDisplay einen WPF-User Control zu einem Datenmodell mit einigen relevanten Eigenschaften gebunden ist: Displayformat (Enum Hex/Binär/Dezimal), Daten (die tatsächliche Byte Wert) und BgColor (eine Zeichenfolge, die eine Systemfarbe darstellt, um anzuzeigen, dass sich ein Wert geändert hat).

Mein Problem ist, dass ich den DataContext der ByteDisplay vollständig ersetzen muss, um Änderungen zu erhalten, die in der Gesamtansicht angezeigt werden, die diese Auflistung enthält. Ich denke, ich könnte das mit einem ValueConverter für die Sammlung von Rohbytes umgehen, anstatt die Änderung im ViewModel der Aggregate View abzuschließen, aber ist das der richtige Ansatz?

+3

Erstellen Sie keine beobachtbaren Sammlungen von UI-Elementen, Sie sollten eine strikte Trennung von Daten und Ansichtskomponenten haben. –

Antwort

0

Warum möchten Sie eine ObservableCollection verwenden? Klingt allerdings sehr seltsam.

Meiner Meinung nach können Sie einfach ein Benutzersteuerelement erstellen, das an ein Ansichtsmodell gebunden ist, indem Sie dem MVVM-Muster folgen.

Hier können Sie Textblöcke, Textfelder, Datagrids, Diagramme usw. verwenden, die an Eigenschaften im Ansichtsmodell binden. Sie könnten die Hintergrundeigenschaft auch an viewmodel binden oder einen Konverter wie gesagt verwenden. Wenn Sie beispielsweise eine andere Eigenschaft verwenden, die besagt, dass Sie einen Wert in einem Textfeld anzeigen und denselben Wert zum Ändern der Hintergrundfarbe verwenden, um den Benutzer zu warnen, verwenden Sie einen Konverter.

So einfach ist das. Ich habe die Logik hinter dem Erstellen einer ObservableCollection immer noch nicht verstanden.

+0

ObservableCollection ermöglicht das Vergrößern und Verkleinern von Byte-Arrays mit entsprechenden Ansichtsänderungen, ohne dass ich das verwalten muss. – tjcertified

+0

Aber sind Sie sicher, dass sich dies nicht auf die Leistung oder das Speichermanagement auswirkt? – ViVi

+0

Wenn es eine Auswirkung gibt, ist es vernachlässigbar. Mein Anliegen ist es, die Bibliothek die Arbeit für mich machen zu lassen, wo es möglich ist. – tjcertified

Verwandte Themen