如何在xamarin(TeeChart和MonoTouch)的蜡烛图中填充序列数据



我正在使用xamarin(Android)中的T恤图库。 我在"蜡烛图"中遇到日间绑定数据的问题

示例代码是这样的!

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.Low

当前项目.时间

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

谢谢,提前

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

===

我的代码就像波纹管一样

    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();
        }
    }

你应该像这里的例子一样做一些事情:

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

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

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日,该缺陷已修复。任何有兴趣测试该解决方案的人请告诉我。

相关内容

  • 没有找到相关文章

最新更新