Обновляйте LineGraph каждую секунду - PullRequest
0 голосов
/ 07 сентября 2011

Привет. Я пытаюсь обновлять линейный график каждую секунду (из инструментария визуализации данных wpf).Следующий код работает для круговой диаграммы:

VB:

Private Sub Window_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
    '  DispatcherTimer setup
    Dim dt As DispatcherTimer = New DispatcherTimer()
    AddHandler dt.Tick, AddressOf dispatcherTimer_Tick
    dt.Interval = New TimeSpan(0, 0, 1)
    dt.Start()
End Sub

Public Sub dispatcherTimer_Tick(ByVal sender As Object, ByVal e As EventArgs)
    UpadateChartData()
    Chart1.DataContext = ""
    Chart1.DataContext = ChartData
End Sub

Public Sub UpadateChartData()
    Dim r As Integer = GetRandom(1, 10)
    ChartData.Add(New ChartData() With {.Name = r.ToString, .Votes = r})
End Sub

XAML:

 <chartingToolkit:Chart Name="Chart1" Title="Chart1" Width="400" Height="400" >
        <chartingToolkit:LineSeries ItemsSource="{Binding}" IndependentValueBinding="{Binding Path=Name}" DependentValueBinding="{Binding Path=Votes}" />
</chartingToolkit:Chart>

Но я получаю эту ошибку при использовании LineSeries (или любого другого типадиаграммы):

Невозможно изменить логические дочерние элементы для этого узла, так как в данный момент идет обход дерева.

Может кто-нибудь сказать мне, почему я получаюошибка или предложить альтернативный подход?

Спасибо за любую помощь!

1 Ответ

1 голос
/ 08 сентября 2011

Это действительно похоже на ошибку в наборе инструментов, как упоминал ColinE.

Я бы посоветовал взглянуть на Динамическое отображение данных , которое действительно облегчает подобные вещи и делает его очень простым. Они предоставляют несколько новых объектов, таких как ObservableDataSource<T>, и на этом вы можете вызвать source.AppendAsync(Dispatcher, T), который обновит график.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...