数据表中的Infragistics xamChart数据绑定日期时间列?

时间:2012-06-13 10:19:25

标签: c# wpf data-binding charts infragistics

需要通过xamChart以下列格式显示数据:

time   | v1  | v2  | ... | vn
-------+-----+-----+-   -+-----
t1     |     |     | ... |       
t2     |     |     | ... |  
...    .     .     . ... . 
tm     |     |     | ... |

其中v1 - vn是设计时未知标签( n 也是未知的)。 t1 - tm是我想要在X轴上的日期时间值。其他单元格包含一些数字。

我需要的是一张如下图所示的图表,但时间为X轴标签,而不仅仅是索引。

xamChart

这是我使用的代码:

foreach (var column in dataTable.Columns.OfType<DataColumn>().Skip(1))
{
    var s = new Series
                {
                    DataSource = dataTable,
                    DataMapping = column.ColumnName,
                    ChartType = ChartType.Line,
                    Label = column.ColumnName,
                };

    queriesChart.Series.Add(s);
}

1 个答案:

答案 0 :(得分:0)

您可以使用带有DataTemplate的CategoryDateTimeAxis为XamDataChart完成此操作:

<ig:CategoryDateTimeXAxis 
    x:Name="xmXAxis" 
    DateTimeMemberPath="Label"  
    ItemsSource="{Binding}" 
    Label="{StaticResource XAxisLabelTemplate }">

的DataTemplate:

<DataTemplate x:Key="XAxisLabelTemplate">
    <StackPanel Orientation="Vertical">
        <TextBlock Text="{Binding Item.Date, Converter={StaticResource igStringFormatConverter}, ConverterParameter=MM/dd/yy}" 
                    TextAlignment="Center" Foreground="#CCCCCC" Height="15" Width="65" Margin="0,4,0,0"/>                 
        <TextBlock Text="{Binding Item, Converter={StaticResource igStringFormatConverter}, ConverterParameter=T}"
                    TextAlignment="Center" Foreground="#CCCCCC" Height="15" Width="65"/>
    </StackPanel>   
</DataTemplate>

转换器:

class igStringFormatConverter : IValueConverter
{
    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        DateTime dt = (DateTime)value;
        string fmtDt = String.Format("{0:" + parameter.ToString() + "}", dt);          
        return fmtDt;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }

    #endregion
}