Quantcast
Channel: OxyPlot (moved to GitHub)
Viewing all articles
Browse latest Browse all 2061

New Post: ColumnSeries doesn't show the data

$
0
0
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));
        }
    }
}

Viewing all articles
Browse latest Browse all 2061

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>