我刚刚使用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中再次调用它仍然无效。
答案 0 :(得分:0)
您在初始化Windows后设置values
,并且由于示例中的values
没有实现setter和INotifyPropertyChanged
方式,因此您的UI线程永远不会被警告改变你的收藏品。
使用INotifyPropertyChanged
界面:
当您设置项目时,您的UI线程知道在xaml部分中有更改要做(我使用了一个Window,但它可以是Page,UserControl或Custom Class)
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中看到你的代码,也许这里也有变化。
答案 1 :(得分:0)
总结一下:
您需要使用ObservableCollection&lt;&gt;而不是List&lt;&gt;。如果内容发生了变化,ObservableCollection会自动刷新。
public ObservableCollection<KeyValuePair<string, float>> values = new ObservableCollection<KeyValuePair<string, float>>();
这是我的。上面的答案是一样的,只是更长的时间。也许在某些情况下你需要使用它。但在这种情况下,我没有看到任何使用它。但是,谢谢!
问题是动态资产净值(我使用2016年)。我想要显示项目金额。问题是:由于某种原因,金额总是为0。并且WPF工具包图表不显示值为0的任何图块
但为什么它是0?金额是小数(C / AL),您需要CALCFIELDS。所以我刚刚添加Rec.CALCFIELDS(field);
并且它有效!价值不再是0!图表显示了我想要的东西。
也许我可以帮助有同样问题的人:)