RadLegend支持
本主题将为您概述RadChartView提供的RadLegend支持。
有关RadLegend控件的更多信息,请参阅文档部分.
图表揭示了一个LegendItems属性,它将被传递到RadLegend的Items属性。LegendItems集合默认情况下是空的,并且不会为一个系列生成任何传奇项目,除非LegendSettings属性。这将生成和添加LegendItem图表的LegendItems集合中的对象。根据LegendSettings和图表系列的默认视觉效果,图表将自动设置LegendItem对象的Title、MarkerStroke、MarkerFill和MarkerGeometry属性。
LegendSetting
每一个图表系列公开LegendSettings属性,该属性允许您确定图例项的外观。图表系列支持两种类型的图例设置。
SeriesLegendSettings:所有图表系列都支持。使用设置的系列将生成一个单一的LegendItem。
设置对象允许你通过它来设置传奇物品的标题标题属性(参见示例2)。
DataPointLegendSettings:仅支持BarSeries而且BubbleSeries.将为使用设置的系列中的每个数据点生成一个LegendItem。
这些设置允许您将标题绑定到数据点模型中的属性。你可以通过TitleBinding财产。属性中的属性名称对应的字符串值数据点对象。
示例1:将图例项标题绑定到CategoricalDataPoint对象的Category属性
这两个图例设置都允许你设置图例项目标记的几何形状。你可以通过MarkerGeometry属性。
代码示例
下面的例子演示了RadLegend和RadCartesianChart之间的合作。在本例中,图表使用调色板为其系列着色,并使用相同的调色板为图例项着色。注意,由于LegendSettings属性还没有设置,上一个系列的传奇项目没有出现。BarSeries被设置为使用DataPointLegendSettings,这就是为什么为每个DataPoint创建一个图例项。如果使用SeriesLegendSettings -只会为BarSeries生成一个项目。
例2:图例设置代码示例
< telerik: RadCartesianChart。LinearAxis /> < telerik: RadCartesianChart。系列>
如果由图表创建的默认LegendItem对象不适用于您的场景,您可以手动填充图例,而不是使用LegendItems收集。读了开始文章了解如何手动使用LegendItem对象填充控件。
在SeriesProvider中使用RadLegend
在使用SeriesProvider时,您可以通过系列的样式或SeriesCreated事件。下面的例子展示了如何设置SeriesProvider并为每个系列添加SeriesLegendSettings。
例3:定义视图
<网格> <网格。ColumnDefinitions> < telerik: RadCartesianChart。HorizontalAxis> < telerik: RadCartesianChart。SeriesProvider> < !——如果你使用NoXaml,请在Style上设置以下属性- BasedOn="{StaticResource PointSeriesStyle}"——> < / >
示例4:定义模型
公共类SeriesInfo{公共字符串SeriesName {get;设置;} public ObservableCollection Items {get;设置;}}公共类PlotInfo{公共双值{get;设置;}公共字符串类别{get;设置;}}
示例5:填充数据
private static Random r = new Random();private ObservableCollection GetData() {var source = new ObservableCollection();For (int I = 0;I < 5;i++) {var seriesInfo = new seriesInfo () {SeriesName = "Series " + i, Items = new ObservableCollection()};For (int k = 0;K < 10;k++) {seriesInfo.Items。Add(new PlotInfo() {Category = "C" + k, Value = r.Next(100, 300)});} source.Add (seriesInfo); } return source; }
例6:设置SeriesProvider源
this.seriesProvider.Source = GetData();