Create a ViewModel to save data for your chart and assign it a DataContext , as shown below:
XAML:
<Window x:Class="WpfApplication222.Window2" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:chart="clr-namespace:De.TorstenMandelkow.MetroChart;assembly=De.TorstenMandelkow.MetroChart" xmlns:local="clr-namespace:WpfApplication222" mc:Ignorable="d" Title="Window2" Height="350" Width="525"> <Window.DataContext> <local:PieChartViewModel/> </Window.DataContext> <Grid> <chart:PieChart ChartTitle="Minimal Pie Chart" ChartSubTitle="Chart with fixed width and height" SelectedItem="{Binding Path=SelectedItem, Mode=TwoWay}" > <chart:PieChart.Series> <chart:ChartSeries SeriesTitle="Errors" DisplayMember="Category" ValueMember="Number" ItemsSource="{Binding Path=Errors}" /> </chart:PieChart.Series> </chart:PieChart> </Grid>
ViewModel:
public class PieChartViewModel { public ObservableCollection<TestClass> Errors { get; private set; } public PieChartViewModel() { Errors = new ObservableCollection<TestClass>(); Errors.Add(new TestClass() { Category = "Globalization", Number = 75 }); Errors.Add(new TestClass() { Category = "Features", Number = 2 }); Errors.Add(new TestClass() { Category = "ContentTypes", Number = 12 }); Errors.Add(new TestClass() { Category = "Correctness", Number = 83 }); Errors.Add(new TestClass() { Category = "Best Practices", Number = 29 }); } }

EDIT: Instead of creating the ViewModel in XAML as before, you can also do it dynamically as follows:
XAML:
Window x:Class="WpfApplication222.Window2" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:chart="clr-namespace:De.TorstenMandelkow.MetroChart;assembly=De.TorstenMandelkow.MetroChart" xmlns:local="clr-namespace:WpfApplication222" mc:Ignorable="d" Title="Window2" Height="350" Width="525" Loaded="Window_Loaded"> <Grid> <chart:PieChart ChartTitle="Minimal Pie Chart" ChartSubTitle="Chart with fixed width and height" SelectedItem="{Binding Path=SelectedItem, Mode=TwoWay}" > <chart:PieChart.Series> <chart:ChartSeries SeriesTitle="Errors" DisplayMember="Category" ValueMember="Number" ItemsSource="{Binding Path=Errors}" /> </chart:PieChart.Series> </chart:PieChart> </Grid>
CS:
public partial class Window2 : Window { PieChartViewModel viewModel; public Window2() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { viewModel = new PieChartViewModel(); viewModel.Errors.Add(new TestClass() { Category = "Globalization", Number = 75 }); viewModel.Errors.Add(new TestClass() { Category = "Features", Number = 2 }); viewModel.Errors.Add(new TestClass() { Category = "ContentTypes", Number = 12 }); viewModel.Errors.Add(new TestClass() { Category = "Correctness", Number = 83 }); viewModel.Errors.Add(new TestClass() { Category = "Best Practices", Number = 29 }); DataContext = viewModel; } }
ViewModel:
public class PieChartViewModel { public ObservableCollection<TestClass> Errors { get; private set; } public PieChartViewModel() { Errors = new ObservableCollection<TestClass>(); } }
source share