如何刷新 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;
我目前正在做一些第一个 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;