如何刷新 WinRTXamlToolkit 图表以显示更改的数据

How to refresh a WinRTXamlToolkit Chart to display changed data

我目前正在做一些第一个 Windows Phone 8 / XAML 实验并使用 WinRTXamlToolkit 图表控件。虽然我设法绘制了我的数据,但我在重新绘制控件以显示更改的数据时遇到了问题。

                CHART_Overview.Series.Add(_lsChartOvw);

            ((AreaSeries)CHART_Overview.Series[0]).ItemsSource = _lstLogOvw;

            LinearAxis dta = new LinearAxis();
            dta.Title = "X";
            dta.Orientation = AxisOrientation.X;
            dta.ShowGridLines = true;

            CHART_Overview.Axes.Add(dta);

            CHART_Overview.Axes.Add(new LinearAxis()
            {
                Minimum = 0,
                Maximum = 100,
                Orientation = AxisOrientation.Y,
                Interval = 20,
                ShowGridLines = true,
                Title = "Y"
            });

            Random rd = new Random((int)DateTime.Now.ToFileTimeUtc());

            for(int i = 0; i < 20; i++)
            {
                _lstLogOvw.Add(new GenericValueItem() { X = i, Y = rd.Next(1, 100) });
            }

我尝试了以下更新方案

                _lstLogOvw.Clear();
            for (int i = 0; i < 20; i++)
            {
                _lstLogOvw.Add(new GenericValueItem() { X = i, Y = rd.Next(1, 100) });
            }

            ((AreaSeries)CHART_Overview.Series[0]).ItemsSource = _lstLogOvw;

列表是 ObservableCollection 类型。这可能是一个绑定问题,但我目前没有太多 XAML 经验来完全理解刷新机制。

不知道正确的做法,但您可以通过在分配回实际列表之前强制 ItemSource 为 null 来绕过它。

((AreaSeries)CHART_Overview.Series[0]).ItemsSource = null;
((AreaSeries)CHART_Overview.Series[0]).ItemsSource = _lstLogOvw;