C#WPFToolKit图表在更新数据上下文时未更新

本文关键字:更新 上下文 数据 C#WPFToolKit | 更新日期: 2023-09-27 18:29:49

所以我使用WPFToolKit图表作为ColumnSeries。当我最初加载屏幕时,数据值会正确地填充到图表中。但是,当我尝试更新数据值时,图表的数据不会刷新。

我已经尝试了这里列出的解决方案更新和刷新wpf图表,在这里我命名了我的列系列,并更新了列系列的DataContext而不是图表,但这产生了相同的结果。

这是我的图表的xaml

    <chartingToolkit:Chart Height="262" HorizontalAlignment="Left" Margin="120,0,0,213" Name="Chart_Payout" Title="Payout Threshold Results" VerticalAlignment="Bottom" Width="360">
        <chartingToolkit:ColumnSeries Name ="ColumnSeries_Payout" DependentValuePath="Value" IndependentValuePath="Key" ItemsSource="{Binding}" Title="Payout" />
    </chartingToolkit:Chart>

这是我用来更新我的图表的方法

    private void FillPayoutChart()
    {
        chartValues.Clear();
        chartValues.Add(new KeyValuePair<string, decimal>("$" + Payout_In.ToString("#,##0.00") + " In", Payout_In));
        chartValues.Add(new KeyValuePair<string, decimal>("", 0));
        chartValues.Add(new KeyValuePair<string, decimal>("$" + Payout_Out.ToString("#,##0.00") + " Out", Payout_Out));
        ColumnSeries_Payout.DataContext = chartValues;
    }

Payout_In和Payout_Out都是在WPF窗口类中声明的小数。当窗口最初打开时,图表会成功地填充信息。但是,当我在加载窗口后尝试更新该信息时,图表不会用新的数据上下文刷新。

关于我需要做什么来刷新图表值中的数据上下文,有什么指导吗?

C#WPFToolKit图表在更新数据上下文时未更新

这是因为覆盖了ColumnSeries DataContext,旧的绑定将失败。您应该更改现有的DataContext,将其作为字段或以其他方式存储。不要第二次分配DataContext。

private void FillPayoutChart()
{
    chartValues.Clear();
    chartValues.Add(new KeyValuePair<string, decimal>("$" + Payout_In.ToString("#,##0.00") + " In", Payout_In));
    chartValues.Add(new KeyValuePair<string, decimal>("", 0));
    chartValues.Add(new KeyValuePair<string, decimal>("$" + Payout_Out.ToString("#,##0.00") + " Out", Payout_Out));
    // execute next string just one time and then manipulate chartValues collection
    //ColumnSeries_Payout.DataContext = chartValues;
}

当然,您的chartValue应该是ObservableCollection<KeyValuePair<string, decimal>>,否则您的ColumnSeries将不会复查集合已更改的事件。