or
public void Create2DCharting(ObservableCollection<
CategoricalDataItem
> data, NewChartTheme chartTheme)
{
this.ShowCartesian3DChart = false;
BarSeries barSeries = new BarSeries();
if (chartTheme.ColorBrushes.Count > 0)
{
for (int i = 0; i <
data.Count
; i++ )
{
data[i]
.Color
=
chartTheme
.ColorBrushes[i];
}
}
if (chartTheme.ChartTp == ChartType.PieChart || chartTheme.ChartTp == ChartType.DoughnutChart)
{
this.ShowPieChart
=
true
;
this.ShowCartesian2DChart
=
false
;
this.PieChart
=
new
RadPieChart();
this.PieChart.Palette
=
new
ChartPalette();
foreach (CategoricalDataItem cdi in data)
PieChart.Palette.GlobalEntries.Add(new PaletteEntry(cdi.Color, cdi.Color));
if (chartTheme.ShowLegend)
{
this.ChartLegend
=
new
RadLegend();
this.ChartLegend.Items
= this.PieChart.LegendItems;
}
}
else
{
this.ShowPieChart
=
false
;
this.ShowCartesian2DChart
=
true
;
this.CartesianChart2D
=
new
RadCartesianChart();
if (chartTheme.BackgroundColor != null)
this.CartesianChart2D.Background
=
new
SolidColorBrush((Color)ColorConverter.ConvertFromString(chartTheme.BackgroundColor));
barSeries.HorizontalAxis
=
new
CategoricalAxis();
barSeries.VerticalAxis
=
new
LinearAxis();
if (chartTheme.ShowLegend)
{
this.ChartLegend
=
new
RadLegend();
barSeries.ItemsSource
=
data
;
barSeries.ValueBinding
=
new
PropertyNameDataPointBinding("YValue");
barSeries.CategoryBinding
=
new
PropertyNameDataPointBinding("XValue");
LegendItemCollection
lic
=
new
LegendItemCollection();
foreach (var d in data)
lic.Add(new LegendItem() { MarkerFill = (Brush)d.Color, MarkerStroke = (Brush)d.Color,
Title
=
d
.XValue });
this.ChartLegend.Items
=
lic
;
}
else
{
barSeries.ItemsSource
=
data
;
barSeries.ValueBinding
=
new
PropertyNameDataPointBinding("YValue");
barSeries.CategoryBinding
=
new
PropertyNameDataPointBinding("XValue");
}
}
switch(chartTheme.ChartTp)
{
case ChartType.BarChart :
if(chartTheme.ColorBrushes.Count > 0)
barSeries.PointTemplate = GetBarColorDataTemplate();
if (chartTheme.ShowGridLines)
this.CartesianChart2D.Grid = new CartesianChartGrid() { MajorLinesVisibility = GridLineVisibility.Y };
this.CartesianChart2D.Series.Add(barSeries);
break;
case ChartType.HorizontalBarChart :
barSeries.VerticalAxis = new CategoricalAxis();
barSeries.HorizontalAxis = new LinearAxis();
if(chartTheme.ColorBrushes.Count > 0)
barSeries.PointTemplate = GetBarColorDataTemplate();
this.CartesianChart2D.Series.Add(barSeries);
break;
case ChartType.LineGraph :
LineSeries lineSeries = new LineSeries();
lineSeries.HorizontalAxis = new CategoricalAxis();
lineSeries.VerticalAxis = new LinearAxis();
lineSeries.ItemsSource = data;
lineSeries.ValueBinding = new PropertyNameDataPointBinding("YValue");
lineSeries.CategoryBinding = new PropertyNameDataPointBinding("XValue");
lineSeries.PointTemplate = GetLineDataPointDataTemplate();
this.CartesianChart2D.Series.Add(lineSeries);
break;
case ChartType.PieChart :
PieSeries pieSeries = new PieSeries();
pieSeries.ItemsSource = data;
pieSeries.ValueBinding = new PropertyNameDataPointBinding("YValue");
PieChart.Series.Add(pieSeries);
break;
case ChartType.DoughnutChart :
DoughnutSeries doughnutSeries = new DoughnutSeries();
doughnutSeries.ItemsSource = data;
doughnutSeries.ValueBinding = new PropertyNameDataPointBinding("YValue");
PieChart.Series.Add(doughnutSeries);
break;
}
}
private DataTemplate GetBarColorDataTemplate()
{
StringReader markup = new StringReader(
@"<
DataTemplate
xmlns
=
""
http://schemas.microsoft.com/winfx/2006/xaml/presentation"">" +
@"<
Rectangle
Fill
=
""
{Binding DataItem.Color}""/>" +
@"</
DataTemplate
>");
XmlReader xmlReader = XmlReader.Create(markup);
return XamlReader.Load(xmlReader) as DataTemplate;
}
private DataTemplate GetLineDataPointDataTemplate()
{
StringReader markup = new StringReader(
@"<
DataTemplate
xmlns
=
""
http://schemas.microsoft.com/winfx/2006/xaml/presentation"">" +
@"<
Ellipse
Height
=
""
10""
Width
=
""
10""
Fill
=
""
{Binding DataItem.Color}""/>" +
@"</
DataTemplate
>");
XmlReader xmlReader = XmlReader.Create(markup);
return XamlReader.Load(xmlReader) as DataTemplate;
}
<
Controls:AutoCompleteBox
WatermarkContent
=
"Select a location..."
DisplayMemberPath
=
"Name"
TextSearchPath
=
"Name"
SelectedItem
=
"{Binding ImpactedLocation, Mode=TwoWay, ValidatesOnDataErrors=True}"
ItemsSource
=
"{Binding AvailableImpactedLocations}"
IsEnabled
=
"{Binding IsOpened}"
MaxDropDownHeight
=
"400"
DropDownWidth
=
"400"
/>