Как связать WPF LiveCharts(LVC) с возможностью детализации?
В настоящее время я изучаю WPF и представляю WPF LiveCharts (LVC). Я понимаю, что диаграмма имеет Chart.DataClick
событие, которое может быть привязано к точке на графике. Однако я не могу получить событие для заполнения новой диаграммы (заменив старую диаграмму) на основе нажатой точки, что должно дать мне развернутое представление о нажатой точке.
Я ссылался на этот пример, однако я не уверен, как связать новую коллекцию серий на основе точки нажатия и привязать ее к моему графику.
Теоретически я подумал о следующих шагах,
- Пользователь нажимает на точку, а код позади проверяет имя точки и получает новое предопределенное свойство seriescollection
- Диаграмма, которая уже была заполнена на основе datacontext и Series в XAML, заменяется новым свойством bindingsource seriescollection2 в том же классе.
Здесь я немного сбит с толку, так как не уверен в том, как выполнить MVVM коллекцию серий с диаграммой, так как пример, над которым я работаю, похоже, не реализовал MVVM.
Я читаю о IObservableChartPoint
документация и есть мнение, что это может быть ключом к достижению я ищу. Странно, что никто не опубликовал что-либо о реализации этой библиотеки, чтобы получить детальное представление.
Я хотел бы использовать диаграмму, читая плоский файл с данными точек серии и отображая их в виде пончика или столбчатой диаграммы. Я публикую код, который я мог бы написать, чтобы достичь того, чего я хочу.
Код позади:
Public ReadOnly Property SeriesCOllection2 As SeriesCollection
Get
_SeriesCollection2 = New SeriesCollection From {
New PieSeries With {
.Title = "Page1",
.Values = New ChartValues(Of ObservableValue) From {
New ObservableValue(8)
},
.DataLabels = True
},
New PieSeries With {
.Title = "Pag2",
.Values = New ChartValues(Of ObservableValue) From {
New ObservableValue(6)
},
.DataLabels = True
},
New PieSeries With {
.Title = "Pag3",
.Values = New ChartValues(Of ObservableValue) From {
New ObservableValue(10)
},
.DataLabels = True
},
New PieSeries With {
.Title = "Pag4",
.Values = New ChartValues(Of ObservableValue) From {
New ObservableValue(4)
},
.DataLabels = True
},
New PieSeries With {
.Title = "Pag5",
.Values = New ChartValues(Of ObservableValue) From {
New ObservableValue(4)
},
.DataLabels = True
}
}
Return _SeriesCOllection2
End Get
End Property>
Код позади событий:
Private _SeriesCOllection2 As SeriesCollection
Public Property SeriesCollection As SeriesCollection
Private Sub Chart_DataClick(sender As Object, chartPoint As ChartPoint) ' Click event on chart data point
If chartPoint.SeriesView.Title.ToLower.Equals("opera") Then
Chart.Series = _SeriesCOllection2
End If
End Sub
Private Sub Button_Click(sender As Object, e As RoutedEventArgs) ' Reset the chart
Chart.Series = SeriesCollection
End Sub
Диаграмма XAML:
d:DataContext="{d:DesignInstance local:BasicChart}"
<lvc:PieChart
Name="Chart"
Grid.Row="1"
Margin="0,15"
DataClick="Chart_DataClick"
InnerRadius="80"
Series="{Binding SeriesCollection}">
<lvc:PieChart.DataTooltip>
<lvc:DefaultTooltip SelectionMode="OnlySender" />
</lvc:PieChart.DataTooltip>
</lvc:PieChart>
Кто-нибудь имеет какие-либо идеи по этому поводу или направить меня в правильном направлении? Небольшое прохождение кода также будет полезно в случае решения.
PS: я использую WPF vb.net.