[英]WPF Toolkit - how to refresh a chart
我刚刚使用WPF Toolkit创建了一个饼图。 我想为MS Dynamics NAV创建一个AddIn。 如果我在NAV中调用该方法:
public void setChart(string chartKey, float chartValue)
{
KeyValuePair<string, float> value = new KeyValuePair<string, float>(chartKey, chartValue);
values.Add(value);
}
我的图表不令人耳目一新。 我的ObservableCollection正在更新,但它不显示任何图表。 如果我这样做
setChart("AB123",60);
它的工作原理。
如何更新图表。 我也叫pieChart.DataContext = values;
在构造函数中。 如果我在setChart中再次调用它仍然无法正常工作。
在初始化窗口后设置values
,并且由于示例中的values
未实现setter和INotifyPropertyChanged
方式,因此您的UI线程永远不会对您对集合所做的更改发出警告。
使用INotifyPropertyChanged
接口:
就像你设置你的项目一样,你的UI线程知道在xaml部分有一个改变(我拿了一个窗口,但它可以是一个页面,一个UserControl或一个自定义类)
public partial class MainWindow : Window, INotifyPropertyChanged {
public event PropertyChangedEventHandler PropertyChanged = delegate { };
private ObservableCollection<KeyValuePair<string, float>> _values;
public ObservableCollection<KeyValuePair<string, float>> values {
get {
if (_values == null) {
_values = new ObservableCollection<KeyValuePair<string, float>>();
}
return _values;
}
set {
_values = value;
PropertyChanged(this, new PropertyChangedEventArgs(nameof(values)));
}
}
....
我没有在你的xaml中看到你的代码,也许这里也有改变。
总结一下:
您需要使用ObservableCollection <>而不是List <>。
如果内容发生了变化,ObservableCollection会自动刷新。
public ObservableCollection<KeyValuePair<string, float>> values = new ObservableCollection<KeyValuePair<string, float>>();
这是我的。 上面的答案是一样的,只是更长的时间。 也许在某些情况下你需要使用它。 但在这种情况下,我没有看到任何使用它。 但是谢谢!
问题是动态资产净值(我正在使用2016年)。 我想要显示项目金额。 问题是:由于某种原因,金额总是为0。 并且WPF Toolkit图表不显示值为0的任何图块。
但为什么它是0? 金额是小数(C / AL),您需要CALCFIELDS。 所以我刚刚添加了Rec.CALCFIELDS(field);
它工作了! 价值不再是0! 图表显示了我想要的东西。
也许我可以帮助有同样问题的人:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.