Laden...

ObservationCollection<Tuple<int,int,int>> in WPF Darstellen

Erstellt von Kleinstein11 vor 6 Jahren Letzter Beitrag vor 6 Jahren 2.192 Views
K
Kleinstein11 Themenstarter:in
21 Beiträge seit 2017
vor 6 Jahren
ObservationCollection<Tuple<int,int,int>> in WPF Darstellen

Hallo zusammen,

ich habe folgendes Problem:

Ich habe eine

ObservationCollection<Tuple<int,int,int>>

. Wie bereits oben beschrieben sind die Werte der Tuple wie folgt beschrieben:

ObservationCollection<Tuple<x Coordinate,y Coordinate,value>>

Nun möchte ich die values daher den dritten Wert der Tuple jeweils mit den passenden X und y Koordinaten in einem Rechteck darstellen.

z.B. x=5, y=10, value=256

Sollte in einem Grid in Reihe 5 und Spalte 10 der Wert 256 stehen.

Mit welchen Tools würde ich das am besten umsetzten?

Und leider verstehe ich auch nicht wie DataBinding für Tuple Elemente funktioniert.

Vielen Dank im Voraus.

P
441 Beiträge seit 2014
vor 6 Jahren

Muss es ein Tuple sein?

Generlel würde ich kein Tupel Databinden, sondern für die Daten für die Oberfläche aufbereiten.
Du könntest zum plotten z.B. eine Charting Lib wie OxyPlot nehmen und dann an der Position ein passendes Label plotten (Annotation).

K
Kleinstein11 Themenstarter:in
21 Beiträge seit 2017
vor 6 Jahren

Ja leider muss es ein Tuple sein, da ich sonst nicht weiß wie ich die x,y,value daten zusammen in den UI-Thread verschieben kann, da diese in einer Background Task erzeugt werden.

P
441 Beiträge seit 2014
vor 6 Jahren

Was spricht gegen ein eigenes Model?


class Coordinate
{

public int X { get; }
public int Y { get; }
public int Value { get; }
}

Wie gesagtr um es auf der UI darzustellen würde ich es in einer Form wandeln, die die UI besser versteht als eine Koordinate mit Wert.

K
Kleinstein11 Themenstarter:in
21 Beiträge seit 2017
vor 6 Jahren

Okay da muss ich gleich mal ein wenig umbauen. Leider bin ich auch Anfänger in WPF, daher könnte man das mit drei separaten Werten in einer Canvas darstellen?

P
441 Beiträge seit 2014
vor 6 Jahren

Wenn du mit Databinding arbeiten willst wirst du denke ich ein eigenes Control bauen [EDIT] oder eine fertige Lib wie z.B. das OxyPlot von oben verwenden[/EDIT] müssen.
Im Canvas zeichnen finden sich bei Google passende Anleitungen, wie z.B. diese hier:
https://social.msdn.microsoft.com/Forums/vstudio/en-US/828a21f9-db01-4f9a-8461-b9a585820b50/how-to-draw-an-ellipse-inside-a-canvas-at-specific-coordinates?forum=wpf

5.657 Beiträge seit 2006
vor 6 Jahren

Hi Kleinstein11,

du kannst die Koordinaten direkt an die Canvas.Left- bzw. Canvas.Top-Eigenschaft binden. Ein eigenes Control braucht man dafür in der Regel nicht.

Mehr Infos zu DataBinding mit WPF findest du unter [Artikel] MVVM und DataBinding.

Weeks of programming can save you hours of planning

J
641 Beiträge seit 2007
vor 6 Jahren

Hier ein Beispiel mit einem ItemsControl : Setting Canvas properties in an ItemsControl DataTemplate

cSharp Projekte : https://github.com/jogibear9988