首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在xamarin (TeeChart和MonoTouch)蜡烛图中填写系列数据

如何在xamarin (TeeChart和MonoTouch)蜡烛图中填写系列数据
EN

Stack Overflow用户
提问于 2014-01-10 11:37:31
回答 1查看 730关注 0票数 1

我正在使用xamarin (Android)中的tee图表库。在“蜡烛图”中,我正面临一个数据绑定的问题。

这样的代码样本!

代码语言:javascript
复制
protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);
    RequestWindowFeature(WindowFeatures.NoTitle);
    SetContentView(Resource.Layout.CandleChart);

    //InitializeComponent();

    chart = new Steema.TeeChart.TChart(this.ApplicationContext);
    chart.Zoom.Style = Steema.TeeChart.ZoomStyles.InChart;
    Steema.TeeChart.Themes.BlackIsBackTheme myTheme = new Steema.TeeChart.Themes.BlackIsBackTheme(chart.Chart);
    myTheme.Apply();
    Type tmp = (Type)Steema.TeeChart.Utils.SeriesTypesOf[12];
    Steema.TeeChart.Styles.Series series;
    series = chart.Series.Add(tmp);

    series.FillSampleValues();  /* Here i want to fill series with my data listed bellow */

    chart.Aspect.View3D = Needs3D(chart[0]);
    chart.Panel.Transparent = true;

    SetContentView(chart);
}

现在我要手动添加系列数据。

比如:

currentItem.Data.Close

currentItem.Data.Open

currentItem.Data.High

currentItem.Data.Low

currentItem.Time

等等。所以,请帮我实现这一目标。

谢谢,提前

==================================================================================

我的代码就像贝娄一样

代码语言:javascript
复制
    private void LoadChart(GraphOutput resGraph)
    {
        DataSet_Obj.Tables.Add("CandleTable");
        DataSet_Obj.Tables["CandleTable"].Columns.Add(new DataColumn("Date", System.Type.GetType("System.DateTime")));
        DataSet_Obj.Tables["CandleTable"].Columns.Add(new DataColumn("Open", System.Type.GetType("System.Double")));
        DataSet_Obj.Tables["CandleTable"].Columns.Add(new DataColumn("Close", System.Type.GetType("System.Double")));
        DataSet_Obj.Tables["CandleTable"].Columns.Add(new DataColumn("High", System.Type.GetType("System.Double")));
        DataSet_Obj.Tables["CandleTable"].Columns.Add(new DataColumn("Low", System.Type.GetType("System.Double"))); 

        for (int i = 0; i < resGraph.graphSymbol[0].CandleSticks.Length; i++)
        {
            DataRow_Obj = DataSet_Obj.Tables["CandleTable"].NewRow();
            DataRow_Obj["Date"] = resGraph.graphSymbol[0].CandleSticks[i].CandleTime;        //DateTime 
            DataRow_Obj["Low"] = resGraph.graphSymbol[0].CandleSticks[i].CandleData.Low;     //Float
            DataRow_Obj["Close"] = resGraph.graphSymbol[0].CandleSticks[i].CandleData.Close; //Float
            DataRow_Obj["Open"] = resGraph.graphSymbol[0].CandleSticks[i].CandleData.Open;   //Float
            DataRow_Obj["High"] = resGraph.graphSymbol[0].CandleSticks[i].CandleData.High;   //Float
            DataSet_Obj.Tables["CandleTable"].Rows.Add(DataRow_Obj);
            DataRow_Obj = null;
        }

        Tag_Serie_Candle = new Steema.TeeChart.Styles.Candle ();
        chart.Series.Add(Tag_Serie_Candle);
        chart.Aspect.View3D = Needs3D(chart[0]);
        chart.Panel.Transparent = true;

        try
        {
            Tag_Serie_Candle.DataSource = DataSet_Obj.Tables["CandleTable"];   /* here I got Error Like: "Cannot bind to non-supported datasource: CandleTable" */
            Tag_Serie_Candle.OpenValues.DataMember = DataSet_Obj.Tables["CandleTable"].Columns["Open"].ToString();
            Tag_Serie_Candle.CloseValues.DataMember = DataSet_Obj.Tables["CandleTable"].Columns["Close"].ToString();
            Tag_Serie_Candle.DateValues.DataMember = DataSet_Obj.Tables["CandleTable"].Columns["Date"].ToString();
            Tag_Serie_Candle.DateValues.DateTime = true;
            Tag_Serie_Candle.HighValues.DataMember = DataSet_Obj.Tables["CandleTable"].Columns["High"].ToString();
            Tag_Serie_Candle.LowValues.DataMember = DataSet_Obj.Tables["CandleTable"].Columns["Low"].ToString();
            Tag_Serie_Candle.LabelMember = "Candle Chart";
            Tag_Serie_Candle.CheckDataSource();

            chartpie.AddView(chart, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent));
        }
        catch (Exception exe)
        {
            exe.Message.ToString();
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-10 12:22:42

您应该做一些事情,如下面的示例所示:

http://www.teechart.net/support/viewtopic.php?f=4&t=2978&p=10547#p10547 http://www.teechart.net/support/viewtopic.php?f=4&t=3291&p=11691#p11691 http://www.teechart.net/support/viewtopic.php?f=4&t=2741&p=11681#p11681

我发现,在目前情况下,这是行不通的。我添加了要尽快修复的缺陷(ID566)列表(现在已修复,请参见回复底部的更新)。如果您在Steema软件的Bugzilla系统注册,您将能够在CC列表中并收到有关状态更新的通知。同时,您可以使用以下代码从DataSet手动读取值:

代码语言:javascript
复制
Tag_Serie_Candle.DateValues.DateTime = true;

for (int i = 0; i < DataSet_Obj.Tables["CandleTable"].Rows.Count; i++)
{
  DataRow row = DataSet_Obj.Tables["CandleTable"].Rows[i];

  DateTime dt = Convert.ToDateTime(row["Date"]);
  Double open = Convert.ToDouble(row["Open"]);
  Double high = Convert.ToDouble(row["High"]);
  Double low = Convert.ToDouble(row["Low"]);
  Double close = Convert.ToDouble(row["Close"]);

  Tag_Serie_Candle.Add(dt, open, high, low, close);
}

更新:截至2014年2月11日,缺陷已被修复。任何有兴趣测试这个解决方案的人请告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21043356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档