繁体   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