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.
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).
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.
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.
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?
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
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
Hier ein Beispiel mit einem ItemsControl : Setting Canvas properties in an ItemsControl DataTemplate
cSharp Projekte : https://github.com/jogibear9988