WPF编程,telerik控件柱状图根据数值不同,显示不同颜色的一种方法。

此方法仅适用于telerik的控件,且是版本较早的。此处只用于做一个参考事例,直接复制不保证可运行。

1、前台

        <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>

 

2、后台

鼠标事件:

        private void Button_Click4(object sender, RoutedEventArgs e)
        {
            int maxItems = 30;
            Random r = new Random();

            List<Company> sampleData = new List<Company>();

            for (int i = 0; i < maxItems; i++)
            {
                sampleData.Add(new Company(r.Next(200, 400)));
            }

            SeriesMapping seriesMapping = new SeriesMapping();
            seriesMapping.LegendLabel = "My Custom Bars";
            seriesMapping.SeriesDefinition = new BarSeriesDefinition();
            seriesMapping.ItemMappings.Add(new ItemMapping("PurchasePrice", DataPointMember.YValue));

            radChart.ItemsSource = sampleData;
            radChart.SeriesMappings.Add(seriesMapping);

            radChart.CreateItemStyleDelegate = BuildCustomItemStyle;

        }

 颜色判定事件:

        public Style BuildCustomItemStyle(Control item, Style style, DataPoint point, DataSeries dataSeries)
        {
            Style newStyle = new Style(style.TargetType);
            newStyle.BasedOn = style;
            Brush brush;

            if (item is BaseChartItem)
            {
                if (dataSeries[(item as BaseChartItem).CurrentIndex].YValue > 300)
                {
                    brush = new SolidColorBrush(Colors.Red);
                }
                else
                {
                    brush = new SolidColorBrush(Colors.Green);
                }
                newStyle.Setters.Add(new Setter(Shape.FillProperty, brush));
            }
            //用于其它类型的图表判断
            //if (item is SeriesItemLabel)
            //{
            //    if ((item as SeriesItemLabel).DataPoint.YValue > 300)
            //    {
            //        brush = new SolidColorBrush(Colors.Red);
            //    }
            //    else
            //    {
            //        brush = new SolidColorBrush(Colors.Green);
            //    }
            //    newStyle.Setters.Add(new Setter(SeriesItemLabel.FillProperty, brush));
            //    newStyle.Setters.Add(new Setter(SeriesItemLabel.StrokeProperty, brush));
            //}
            //if (item is ChartLegendItem)
            //{
            //    brush = this.Resources["LegendItemStyle"] as Brush;
            //    newStyle.Setters.Add(new Setter(System.Windows.Shapes.Path.FillProperty, brush));
            //}

            return newStyle;
        }

 

3、相关类

    public class Company
    {
        public double PurchasePrice
        {
            get; set;
        }
    }

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值