我在 XAML 中定义了一个 OxyPlot 图表,如下所示:
<oxy:Plot Height="336">
<oxy:Plot.Series>
<oxy:LineSeries ItemsSource="{Binding Chart}"/>
</oxy:Plot.Series>
</oxy:Plot>
在 viewModel 中我有以下内容:
public ObservableCollection<DataPoint> Chart { get; private set; }
public MainViewModel()
{
Chart = new ObservableCollection<DataPoint>()
{ new DataPoint(12, 14), new DataPoint(20, 26) };
public void PriceChange(Model[] quotes)
{
for (int i = 0; i < quotes.Length; i++)
{
Chart.Add(new DataPoint(quotes[i].LastTradePrice, i*10));
}
}
}
我可以看到为最初的两个硬编码绘制的初始图表DataPoint
s.
但当一切都完成之后PriceChange()
方法正在触发,新的DataPoint
s 未绘制在图表上。既然它是一个ObservableCollection
它应该自动通知用户界面,不是吗?或者我错过了什么?
顺便说一句,我有以下内容example在文档上。
你可以做:
<oxy:Plot InvalidateFlag="{Binding DataPoints.Count, Delay=20}">
<oxy:Plot.Series>
<oxy:LineSeries ItemsSource="{Binding DataPoints}"/>
</oxy:Plot.Series>
</oxy:Plot>
在您的情况下,不需要延迟,但有时它可能很有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)