XamDataChart に DataTable のデータを表示させたい場合は、軸や Series の ItemsSource に DataTable の DataView を指定し、値は列名で指定します。
ViewModel 側
// MainWindowViewModel.cs internal class MainWindowViewModel { private DataTable _energyProductionTable; public DataView? EnergyProductionView { get => _energyProductionTable?.DefaultView; } public MainWindowViewModel() { _energyProductionTable = new (); _energyProductionTable.Columns.Add("Country"); // X軸に表示するラベル _energyProductionTable.Columns.Add("Coal", typeof(double)); // 値1つめ _energyProductionTable.Columns.Add("Gas", typeof(double)); // 値2つめ _energyProductionTable.Columns.Add("Hydro", typeof(double)); // 値3つめ _energyProductionTable.Rows.Add([ "Country1", 86.4505134, 103.2891932, 126.0406841 ]); _energyProductionTable.Rows.Add([ "Country2", 114.0853903, 82.48463306, 125.9912834 ]); _energyProductionTable.Rows.Add([ "Country3", 127.4458425, 97.7079237, 123.3935982 ]); _energyProductionTable.Rows.Add([ "Country4", 102.5485605, 86.98280705, 114.6298345 ]); } }
View 側
<!-- MainWindow.xaml --> <ig:XamDataChart x:Name="xamDataChart1" DataContext="{Binding EnergyProductionView}" ... > <ig:XamDataChart.Axes> <ig:CategoryXAxis x:Name="xAxis" ItemsSource="{Binding}"> <ig:CategoryXAxis.Label> <DataTemplate> <TextBlock Text="{Binding Item.Row.ItemArray[0]}"/> </DataTemplate> </ig:CategoryXAxis.Label> </ig:CategoryXAxis> <ig:NumericYAxis x:Name="yAxis" MinimumValue="0" MaximumValue="200" > </ig:NumericYAxis> </ig:XamDataChart.Axes> <!-- シリーズはコードビハインドで追加します --> </ig:XamDataChart>
public MainWindow() { InitializeComponent(); var chart = this.xamDataChart1; var xAxis = this.xAxis; var yAxis = this.yAxis; var dataView = chart.DataContext as DataView; if (dataView == null) return; var dataTable = dataView.Table; if (dataTable == null) return; foreach(DataColumn column in dataTable.Columns) { // 1列目はX軸に表示するラベルなのでスキップします。 if (dataTable.Columns.IndexOf(column) == 0) continue; chart.Series.Add(new ColumnSeries() { XAxis = xAxis, YAxis = yAxis, ItemsSource = dataView, ValueMemberPath = column.ColumnName, Title = column.ColumnName, }); } }
実行結果
