繁体   English   中英

使用wpf实时图表库时,无法显示数据中的折线图。 我怀疑数据绑定错误

[英]While using wpf live chart library, I can't show line chart from data. I suspect data binding mistake

我正在尝试使用数据库中的数据显示笛卡尔图表。 但是我一直坚持将数据显示为图表。

我检查了数据是否正确放入seriescollection。 因此,我认为数据绑定存在错误。

这是我在xaml文件中的代码。

<wpf:CartesianChart Name="mainChart" Grid.Row="1" Grid.ColumnSpan="8" Height="250" Series="{Binding mainData}">
    <wpf:CartesianChart.AxisX>
        <wpf:Axis Title="Date" Labels="{Binding mainDataLabel}"></wpf:Axis>
    </wpf:CartesianChart.AxisX>
</wpf:CartesianChart>

以下是我的代码中与图表相关的部分。

public partial class MainWindow : Window
{
    private SeriesCollection mainData;
    private List<string> mainDataLabel;

    public void GetDataAsCondition(SearchCondition condition)
    {

        // Here is some code to get data from DB

        for (int idx = 0; idx < mainDataTable.Columns.Count; idx++)
        {
            if (idx > 0)
            {
                LineSeries tmpLineSeries = new LineSeries();
                List<int> tmpDataList = new List<int>();
                tmpLineSeries.Title = mainDataTable.Columns[idx].ColumnName;

                for (int rowCnt = 0; rowCnt < mainDataTable.Rows.Count; rowCnt++)
                {
                    tmpDataList.Add(Int32.Parse(mainDataTable.Rows[rowCnt][idx].ToString()));
                }
                tmpLineSeries.Values = new ChartValues<int>(tmpDataList);

                mainData.Add(tmpLineSeries);

            }
            else if (idx == 0)
            {

                for (int rowCnt = 0; rowCnt < mainDataTable.Rows.Count; rowCnt++)
                {
                    mainDataLabel.Add(mainDataTable.Rows[rowCnt][idx].ToString());
                }

            }
        }
    }
}

我检查了mainwindow类中声明的绑定属性“ mainData”。 因此,我认为绑定应该起作用。 我在哪里在此代码中犯了错误? 请帮忙。

谢谢。

您正在尝试执行到私有字段的绑定,这是错误的。 如果要使绑定正常工作,则mainData和mainDataLabel必须是公共属性,而不是字段。

所以...应该是:


public List<string> MainDataLabel { get;set; }

public SeriesCollection MainData { get;set; }

我希望这个对你有用 :)

您应该使用依赖项属性来绑定详细信息,如下所示:

公共静态只读DependencyProperty MainDataLabelProperty = DependencyProperty.Register(“ MainDataLabel”,typeof(string),typeof(MainWindow),new PropertyMetadata(“”,new PropertyChangedCallback(OnSetTextChanged)))));

  public string MainDataLabel{ 
     get { return (string)GetValue(SetTextProperty); } 
     set { SetValue(MainDataLabelProperty, value); } 
  } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM