簡體   English   中英

WPF工具包 - 如何刷新圖表

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM