Telerik是一个强大的WPF第三方控件库,这里给出的相关设置代码事例适用于早期版本的Telerik,仅做为一某些情况下的参考。直接复制可能因为版本的问题报错。
1、引用DLL
Telerik.Windows.Controls.Charting.dll, Telerik.Windows.Controls.dll Telerik.Windows.Data.dll. |
2、前台
<telerikChart:RadChart x:Name="radChart"
Grid.Row="1"
d:LayoutOverrides="Width, Height">
<telerikChart:RadChart.DefaultView>
<telerikChart:ChartDefaultView>
<telerikChart:ChartDefaultView.ChartTitle>
<telerikChart:ChartTitle Content="标题"
HorizontalAlignment="Stretch" />
</telerikChart:ChartDefaultView.ChartTitle>
</telerikChart:ChartDefaultView>
</telerikChart:RadChart.DefaultView>
</telerikChart:RadChart>
3、后台
private void Button_Click(object sender, RoutedEventArgs e)
{
//标题
radChart.DefaultView.ChartTitle.Content = "Year 2009";
//线段说明
radChart.DefaultView.ChartLegend.Header = "线段说明";
radChart.DefaultView.ChartLegend.UseAutoGeneratedItems = true;
radChart.DefaultView.ChartLegendPosition = Dock.Right;
//X轴,标题,范围,步距,样式
radChart.DefaultView.ChartArea.AxisX.Title = "X轴标题";
radChart.DefaultView.ChartArea.AxisX.AutoRange = true;
radChart.DefaultView.ChartArea.AxisX.LabelRotationAngle = 45;//角度可为负,-90为竖直
radChart.DefaultView.ChartArea.AxisX.Step = 1;
radChart.DefaultView.ChartArea.AxisX.LayoutMode = AxisLayoutMode.Inside;
//Y轴,标题,范围,步距,样式
radChart.DefaultView.ChartArea.AxisY.Title = "Y轴标题";
// radChart.DefaultView.ChartArea.AxisY.DefaultLabelFormat = "#VAL{C0}";//Y轴的刻度数值显示,#%{p}是百分号,C4,小数点后四位
radChart.DefaultView.ChartArea.NoDataString = "没有数据";
radChart.DefaultView.ChartArea.ItemClick += new EventHandler<ChartItemClickEventArgs>(ChartArea_ItemClick);//点击数值点时,触发ChartArea_ItemClick事件。
//将数值Quantity按照降序排列。
ChartSortDescriptor descriptor = new ChartSortDescriptor();
descriptor.Member = "Quantity";
descriptor.SortDirection = ListSortDirection.Ascending;
radChart.SortDescriptors.Add(descriptor);
//条件筛选,指定数值列,指定条件,指定用于筛选比较的值。
ChartFilterDescriptor descriptor = new ChartFilterDescriptor();
descriptor.Member = "Quantity";
descriptor.Operator = FilterOperator.IsLessThanOrEqualTo;
descriptor.Value = 150;
this.radChart.FilterDescriptors.Add( descriptor );
//缩放功能,第一个参数指调整的最小刻度值,0到1之间,第二个,第三个是初始放大的区域,也是小数,可不设置,默认全显。第四个是模式。
this.radChart.DefaultView.ChartArea.ZoomScrollSettingsX.MinZoomRange = 0.2;
this.radChart.DefaultView.ChartArea.ZoomScrollSettingsX.RangeStart = 0.2;
this.radChart.DefaultView.ChartArea.ZoomScrollSettingsX.RangeEnd = 0.8;
this.radChart.DefaultView.ChartArea.ZoomScrollSettingsX.ScrollMode = ScrollMode.ScrollAndZoom;
#region 折线
SeriesMapping seriesMapping = new SeriesMapping();
seriesMapping.LegendLabel = "线条1";
//标签样式定义。
LabelSettings settings = new LabelSettings(); //实例化样式
settings.Distance = 10;//标签距离点10
settings.ShowConnectors = true;//标签与点之间显示线
SplineSeriesDefinition lineSeries = new SplineSeriesDefinition();//实例化线型
lineSeries.LabelSettings = settings;
seriesMapping.SeriesDefinition = lineSeries;//关键点在这里,需要将自定义的标签样式给到当前的线型。
radChart.DefaultView.ChartArea.SmartLabelsEnabled = true;
//seriesMapping.SeriesDefinition = new SplineSeriesDefinition();//一般情况下这样直接指定线开,用其默认的标签类型。
//X轴绑定值
seriesMapping.ItemMappings.Add(new ItemMapping("Month", DataPointMember.XValue));
// seriesMapping.SeriesDefinition.ItemLabelFormat = "#Y{C0}";//曲线上Y值的显示
//Y轴绑定值
seriesMapping.ItemMappings.Add(new ItemMapping("Quantity", DataPointMember.YValue));
//X轴显示名称
seriesMapping.ItemMappings.Add(new ItemMapping("MonthName", DataPointMember.XCategory));
seriesMapping.SeriesDefinition.ShowItemToolTips = true;//提示信息需要手动开启
seriesMapping.SeriesDefinition.ItemToolTipFormat = "注释1: #XCAT\n注释2: #HIGH";//#XCAT与下文中的XCategory对应,#Y与YValue对应,用 \n 换行
//seriesMapping.ItemMappings.Add(new ItemMapping("MonthName", DataPointMember.Tooltip));//直接绑定提示信息,只显示数值,不能自定义格式。
radChart.SeriesMappings.Add(seriesMapping);
radChart.ItemsSource = this.CreateData();
}
//点击数值点时触发的事件
private void ChartArea_ItemClick(object sender, ChartItemClickEventArgs e)
{
//窗口格式化显示
ProductSales td = e.DataPoint.DataItem as ProductSales;
MessageBox.Show(string.Format(
"点的数值 {0:d}:\n\n数值二\t: {1:c}\n", td.Month, td.Quantity), td.MonthName, MessageBoxButton.OK);
//导出为EXCEL
SaveFileDialog dialog = new SaveFileDialog();
dialog.DefaultExt = "*.xls";
dialog.Filter = "Files(*.xls)|*.xls";
if (!(bool)dialog.ShowDialog())
return;
Stream fileStream = dialog.OpenFile();
radChart.ExportToExcelML(fileStream);
fileStream.Close();
}
private List<ProductSales> CreateData()
{
List<ProductSales> persons = new List<ProductSales>();
persons.Add(new ProductSales(154, 1, "January"));
persons.Add(new ProductSales(138, 2, "February"));
persons.Add(new ProductSales(143, 3, "March"));
persons.Add(new ProductSales(120, 4, "April"));
persons.Add(new ProductSales(135, 5, "May"));
persons.Add(new ProductSales(125, 6, "June"));
persons.Add(new ProductSales(179, 7, "July"));
persons.Add(new ProductSales(170, 8, "August"));
persons.Add(new ProductSales(198, 9, "September"));
persons.Add(new ProductSales(187, 10, "October"));
persons.Add(new ProductSales(193, 11, "November"));
persons.Add(new ProductSales(212, 12, "December"));
return persons;
}