Livechart Daten anzeigen lassen C#?

1 Antwort

Nutze MVVM. Leg dir zuerst einmal eine Klasse (dein ViewModel) an und setze dieses als Datenkontext für dein View. Implementiere danach das INotifyPropertyChanged-Interface.

<Window.DataContext>
  <local:YourViewModelClass />
</Window.DataContext>

In der Klasse brauchst du ein Property für die verfügbaren IDs, ein Property für die aktuell gewählte ID und die Properties für das Diagramm, die sich ändern können (SeriesCollection, u.ä.). Wenn ihre Werte über das Property gesetzt werden, sollten sie die PropertyChanged-Methode aufrufen, um das View über die Datenänderung zu informieren.

Im Setter für die aktuell gewählte ID wiederum werden die neuen Daten geholt und die Diagramm-Properties gesetzt. Am besten lagert man diese Operation in eine eigene Methode aus.

Für das View brauchst du dann noch eine ComboBox und den Diagramm-Container. Beide Komponenten werden an die Properties des ViewModels gebunden.

<StackPanel>
  <ComboBox ItemsSource="{Binding Ids}" SelectedValue="{Binding CurrentId}" SelectedValuePath="Content" />
  <lvc:CartesianChart Series="{Binding SeriesCollection}">
    <!-- etc. ... -->
  </lvc:CartesianChart>
</StackPanel> 

Die Window-Klasse bleibt übrigens im Anfangszustand, bzw.:

public partial class MainWindow : Window
{
  public MainWindow() => InitializeComponent();
}

Das Einholen der Daten aus der Datenbank gehört in eine eigene Klasse. Das ViewModel kann eine Instanz für diese bekommen, um eine Datenanfrage vornehmen zu können.

PS.: Klassennamen beginnen nach üblicher Konvention mit einem Großbuchstaben. Um Ordnung im Projekt zu halten, sollte dieser Stil einheitlich verfolgt werden.