【发布时间】:2015-10-22 16:15:40
【问题描述】:
我正在创建一个显示学生分数的 WPF/C# 图表(使用 Charting Toolkit)。 我正在寻找的是,如果标记低于 50,则 DataPoint 应该显示一个椭圆,而高于 50 它应该显示一个矩形。 目前,它显示所有值的矩形。
XAML 是:
<chartingToolkit:Chart Background="{x:Null}" Name="lineChart" Title="Students Result"
VerticalAlignment="Top" Height="450" Width="550">
<chartingToolkit:LineSeries Name="StudentMarks" Title="Student Marks" Background="Transparent"
DependentValuePath="Value"
IndependentValuePath="Key"
ItemsSource="{Binding [0]}">
<chartingToolkit:LineSeries.DataPointStyle>
<Style TargetType="chartingToolkit:LineDataPoint">
<Setter Property="Background" Value="DarkBlue"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="chartingToolkit:LineDataPoint">
<Grid x:Name="grdDataPointRect">
<Rectangle x:Name="passed" Fill="{TemplateBinding Background}" Stroke="Black"/>
<Ellipse x:Name="failed" Width="5" Height="5" Stroke="Green" StrokeThickness="1"
Fill="Green" Visibility="Hidden"></Ellipse>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</chartingToolkit:LineSeries.DataPointStyle>
</chartingToolkit:LineSeries>
<chartingToolkit:Chart.Axes>
<chartingToolkit:LinearAxis Name="xAxis" Orientation="X" ShowGridLines="True"
Minimum="1" Maximum="5" Interval="1" Title="Students" />
<chartingToolkit:LinearAxis Name="yAxis" Orientation="Y" ShowGridLines="True"
Minimum="10" Maximum="100" Interval="10" Title="Marks" />
</chartingToolkit:Chart.Axes>
</chartingToolkit:Chart>
C#代码是:
private void DrawGraph()
{
List<KeyValuePair<int, int>> Students1 = new List<KeyValuePair<int, int>>();
List<KeyValuePair<int, int>> Students2 = new List<KeyValuePair<int, int>>();
var dataSourceList = new List<List<KeyValuePair<int, int>>>();
Students1.Add(new KeyValuePair<int, int>(1, 40));
Students1.Add(new KeyValuePair<int, int>(2, 70));
Students1.Add(new KeyValuePair<int, int>(3, 55));
Students1.Add(new KeyValuePair<int, int>(4, 35));
Students1.Add(new KeyValuePair<int, int>(5, 80));
// if marks are less then 50
// change datapointstyle to ellipse from rectangle
dataSourceList.Add(Students1);
lineChart.DataContext = dataSourceList;
}
请指导。
【问题讨论】: