【问题标题】:Chart filling from LinkedList<String, int>从 LinkedList<String, int> 填充图表
【发布时间】:2011-11-15 17:09:50
【问题描述】:

在我的 C#-WPF 应用程序中,我想用以下内容填充 WPF ColumnChart:

private void LoadPieChartData()
{
    LinkedList<String> kostenstellen = rep.GetKostenstellen();
    foreach (String s in kostenstellen)
    {
        ((ColumnSeries)PieChart.Series[i]).ItemsSource =
            new KeyValuePair<string, double>[]{
            new KeyValuePair<string,double>(kostenstellen.ElementAt(i), i)
        };
        i++;
    }
}

这是 xaml 代码:

                    <DVC:Chart HorizontalAlignment="Left" Margin="625,44,0,0" Name="PieChart" VerticalAlignment="Top" Height="276" Width="256" > 
                        <DVC:Chart.Series>
                            <DVC:ColumnSeries ItemsSource="{Binding LoadPieChartData}" IndependentValueBinding="{Binding Path=Key}" DependentValueBinding="{Binding Path=Value}" />
                        </DVC:Chart.Series>
                    </DVC:Chart>

我的问题是,我得到以下 XamlParseException:

'对'Finanz_WPF.MainWindow'类型的构造函数的调用 与指定的绑定约束匹配的会引发异常。

难道不能迭代 PieChart.Series 吗? 我可以通过什么方式来管理它?

【问题讨论】:

    标签: c# wpf charts


    【解决方案1】:

    DependencyProperty 旨在指向一个值,而不是一个方法。

    要么将绑定更改为指向Property 而不是Method,要么在ColumnSeriesLoaded 事件中运行LoadPieChartData() 方法

    【讨论】:

    • 另外,添加到 Rachel 的答案中,绑定始终适用于公共属性。所以,让它成为公共财产.. :)
    • 问题是,我不想将它绑定到一个属性。我发现,如果我尝试迭代 Series,WPF 对象必须存在。
    • @user896692 所以在ColumnSeriesLoaded 事件中运行它。只需使用 (ColumnSeries)sender 获取您的 ColumnSeries 而不是 PieChart.Series[i]
    • 感谢您的提示!但我还有一个问题,直到今天我还没有和发件人合作过。我现在如何迭代我的列表?因为 sender[i] 肯定是不可能的
    • @user896692 ColumnSeries 的 Loaded 事件的方法签名应该是 void ColumnSeries_Loaded(object sender, EventArgs e)sender 对象将是您的 ColumnSeries。您只需将其转换为正确的类型即可使用它
    猜你喜欢
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多