[英]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.