private void xyChart_DataStructureCreated(object sender, EventArgs e) { series0.DataPointAnnotations.Clear(); if (PieChartParameters.ShowAnnotations == true) { if (PieChartParameters.ShowAnnotationLabel == false && PieChartParameters.ShowAnnotationPercent == false && PieChartParameters.ShowAnnotationValue == false) { return; } string xaml = "<DataTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:dvCommon=\"clr-namespace:ComponentArt.Win.DataVisualization.Common;assembly=ComponentArt.Win.DataVisualization.Common\" " + "xmlns:charting=\"clr-namespace:ComponentArt.Win.DataVisualization.Charting;assembly=ComponentArt.Win.DataVisualization.Charting\" " + "xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" " + "xmlns:sys=\"clr-namespace:System;assembly=mscorlib\">" + "<Border Background=\"#70ffcece\" CornerRadius=\"4\" Padding=\"6,3,6,3\" BorderBrush=\"#FFc4c4c4\" BorderThickness=\"0.5\">" + "<StackPanel Orientation=\"Vertical\" HorizontalAlignment=\"Center\">"; if (PieChartParameters.ShowAnnotationLabel == true) { xaml = xaml + "<charting:FormattedTextBlock Margin=\".5,.5,0,0\" HorizontalAlignment=\"Center\" TextAlignment=\"Center\" Data=\"{Binding DataPoint.ActualLabel}\" Foreground=\"Black\" FontWeight=\"Bold\" FontSize=\"10.5\" />"; } xaml = xaml + "<StackPanel Orientation=\"Horizontal\" HorizontalAlignment=\"Center\">"; if (PieChartParameters.ShowAnnotationValue == true) { xaml = xaml + "<TextBlock Text=\"{Binding DataPoint.Y}\" Foreground=\"Black\" FontWeight=\"Bold\" FontSize=\"10.5\" HorizontalAlignment=\"Center\"/>"; } if (PieChartParameters.ShowAnnotationPercent == true) { xaml += "<dvCommon:CalcContainer>" + "<dvCommon:CalcContainer.Computing>" + "<sys:String>" + "var sum = 0;" + "var i = 0;" + "while (DataPoint.Chart.DataSeries['S0'].DataPoints.Count > i)" + "{" + "sum = sum + DataPoint.Chart.DataSeries['S0'].DataPoints[i].Y;" + "i = i + 1" + "};" + "var data = '??';" + "if (sum > 0)" + "{" + " data = DataPoint.Y / sum " + "};" + "Data = data;" + "</sys:String>" + "</dvCommon:CalcContainer.Computing>" + "<charting:FormattedTextBlock Format=\" ( 0% )\" FontSize=\"10.5\" HorizontalAlignment=\"Center\" x:Name=\"percentText\">" + "</charting:FormattedTextBlock>" + "</dvCommon:CalcContainer>"; } xaml = xaml + "</StackPanel></StackPanel>" + "</Border></DataTemplate>"; DataPointAnnotation dpa1 = new DataPointAnnotation(); dpa1.MinimumPercentage = AnnotationPercentCutoff;// 20; dpa1.LineStroke = new SolidColorBrush(Color.FromArgb(255, 0, 0, 0)); dpa1.Template = (DataTemplate)System.Windows.Markup.XamlReader.Parse(xaml); series0.DataPointAnnotations.Add(dpa1); DataPointAnnotation dpa2 = new DataPointAnnotation(); dpa2.RelativeX = 0.8; dpa2.RelativeY = 0.5; dpa2.RelativeRadialOffset = 0.3; dpa2.HorizontalOffset = 5; dpa2.MaximumPercentage = AnnotationPercentCutoff;// 20; dpa2.LineStroke = new SolidColorBrush(Color.FromArgb(255, 0, 0, 0)); dpa2.Template = (DataTemplate)System.Windows.Markup.XamlReader.Parse(xaml); series0.DataPointAnnotations.Add(dpa2); } }