I am having issue on generating a Column/Bar Chart since upgraded to VS2013. After spending days on searching solution from web and testing, I finally believe it doesn't work in the new OxyPlot package...
Below is the test code. It works when I use the NoPCL.2013.1.51.1 version, however when I replaced the OxyPlot by downloading the latest version from NuGet (version 2014.1.249.1) it shows only an empty chart (only show the axes but no data or no column).
* __View__
```
<Window x:Class="test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:oxy="http://oxyplot.codeplex.com"
Title="MainWindow" Height="350" Width="525">
<Grid>
<oxy:Plot Model="{Binding PivotData}" />
</Grid>
</Window>
```
* __ViewModel__
```
using OxyPlot;
using OxyPlot.Axes;
using OxyPlot.Series;
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Globalization;
namespace test
{
public class MainViewModel : ViewModelBase
{
private ObservableCollection<SalesModel> salesData;
public ObservableCollection<SalesModel> SalesData
{
get { return salesData; }
set { salesData = value; OnPropertyChanged("SalesData"); }
}
private PlotModel pivotData;
public PlotModel PivotData
{
get { return pivotData; }
set { pivotData = value; OnPropertyChanged("PivotData"); }
}
public MainViewModel()
{
GenerateSalesData();
CreatePivotChart();
UpdatePivotData();
}
private void GenerateSalesData()
{
SalesData = new ObservableCollection<SalesModel>();
SalesData.Add(new SalesModel(new DateTime(2013, 11, 1), 12000));
SalesData.Add(new SalesModel(new DateTime(2013, 12, 1), 13000));
SalesData.Add(new SalesModel(new DateTime(2014, 1, 1), 12500));
SalesData.Add(new SalesModel(new DateTime(2014, 2, 1), 14000));
}
private void CreatePivotChart()
{
PivotData = new PlotModel();
PivotData.Title = "Sales Monthly Summary";
}
private void UpdatePivotData()
{
var axisX = new CategoryAxis(AxisPosition.Bottom) { ItemsSource = SalesData, LabelField = "Date" };
PivotData.Axes.Add(axisX);
var axisY = new LinearAxis(AxisPosition.Left) { Title = "USD" };
PivotData.Axes.Add(axisY);
var dataSeries = new ColumnSeries() { ItemsSource = SalesData, ValueField = "Amount" };
PivotData.Series.Add(dataSeries);
}
}
public class SalesModel : ViewModelBase
{
private string date;
public string Date { get { return date; } set { date = value; OnPropertyChanged("Date"); } }
private int amount;
public int Amount { get { return amount; } set { amount = value; OnPropertyChanged("Amount"); } }
public SalesModel(DateTime _date, int _amount)
{
date = new DateTimeFormatInfo().GetAbbreviatedMonthName(_date.Month) + "/" + (_date.Year).ToString();
amount = _amount;
}
}
public abstract class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string prop)
{
var pc = PropertyChanged;
if (pc != null)
pc(this, new PropertyChangedEventArgs(prop));
}
}
}
```
Comments: I just fixed an error related to category axes/column series. Can you check if this bug persists in the newest version?
Below is the test code. It works when I use the NoPCL.2013.1.51.1 version, however when I replaced the OxyPlot by downloading the latest version from NuGet (version 2014.1.249.1) it shows only an empty chart (only show the axes but no data or no column).
* __View__
```
<Window x:Class="test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:oxy="http://oxyplot.codeplex.com"
Title="MainWindow" Height="350" Width="525">
<Grid>
<oxy:Plot Model="{Binding PivotData}" />
</Grid>
</Window>
```
* __ViewModel__
```
using OxyPlot;
using OxyPlot.Axes;
using OxyPlot.Series;
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Globalization;
namespace test
{
public class MainViewModel : ViewModelBase
{
private ObservableCollection<SalesModel> salesData;
public ObservableCollection<SalesModel> SalesData
{
get { return salesData; }
set { salesData = value; OnPropertyChanged("SalesData"); }
}
private PlotModel pivotData;
public PlotModel PivotData
{
get { return pivotData; }
set { pivotData = value; OnPropertyChanged("PivotData"); }
}
public MainViewModel()
{
GenerateSalesData();
CreatePivotChart();
UpdatePivotData();
}
private void GenerateSalesData()
{
SalesData = new ObservableCollection<SalesModel>();
SalesData.Add(new SalesModel(new DateTime(2013, 11, 1), 12000));
SalesData.Add(new SalesModel(new DateTime(2013, 12, 1), 13000));
SalesData.Add(new SalesModel(new DateTime(2014, 1, 1), 12500));
SalesData.Add(new SalesModel(new DateTime(2014, 2, 1), 14000));
}
private void CreatePivotChart()
{
PivotData = new PlotModel();
PivotData.Title = "Sales Monthly Summary";
}
private void UpdatePivotData()
{
var axisX = new CategoryAxis(AxisPosition.Bottom) { ItemsSource = SalesData, LabelField = "Date" };
PivotData.Axes.Add(axisX);
var axisY = new LinearAxis(AxisPosition.Left) { Title = "USD" };
PivotData.Axes.Add(axisY);
var dataSeries = new ColumnSeries() { ItemsSource = SalesData, ValueField = "Amount" };
PivotData.Series.Add(dataSeries);
}
}
public class SalesModel : ViewModelBase
{
private string date;
public string Date { get { return date; } set { date = value; OnPropertyChanged("Date"); } }
private int amount;
public int Amount { get { return amount; } set { amount = value; OnPropertyChanged("Amount"); } }
public SalesModel(DateTime _date, int _amount)
{
date = new DateTimeFormatInfo().GetAbbreviatedMonthName(_date.Month) + "/" + (_date.Year).ToString();
amount = _amount;
}
}
public abstract class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string prop)
{
var pc = PropertyChanged;
if (pc != null)
pc(this, new PropertyChangedEventArgs(prop));
}
}
}
```
Comments: I just fixed an error related to category axes/column series. Can you check if this bug persists in the newest version?