首先,定义柱状图,并设置自定义的DataTemplate

        <telerik:RadCartesianChart >
<telerik:RadCartesianChart.HorizontalAxis>
<telerik:LinearAxis Minimum=""/>
</telerik:RadCartesianChart.HorizontalAxis>
<telerik:RadCartesianChart.VerticalAxis>
<telerik:CategoricalAxis IsInverse="True" />
</telerik:RadCartesianChart.VerticalAxis>
<telerik:RadCartesianChart.Grid>
<telerik:CartesianChartGrid MajorLinesVisibility="X" />
</telerik:RadCartesianChart.Grid>
<telerik:BarSeries ItemsSource="{Binding ChartDatas}" CategoryBinding="Name" ValueBinding="Value" ShowLabels="True" IsSelected="True" >
<telerik:BarSeries.PointTemplate>
<DataTemplate>
<kpiCtrl:Histogram CategoryName="{Binding Converter={StaticResource histogramColorConverter}}"/>
</DataTemplate>
</telerik:BarSeries.PointTemplate>
<telerik:BarSeries.LabelDefinitions>
<telerik:ChartSeriesLabelDefinition Format="{}{0:0.00}" HorizontalAlignment="Center" VerticalAlignment="Center" DefaultVisualStyle="{StaticResource barSeriesLabelStyle}" />
</telerik:BarSeries.LabelDefinitions>
</telerik:BarSeries>
</telerik:RadCartesianChart>

接着自定义用户控件:Histogram,CategoryName属性用来区分不同属性名显示不同色系

    public partial class Histogram : UserControl
{
public Histogram()
{
InitializeComponent();
} public string CategoryName
{
get { return (string)GetValue(CategoryNameProperty); }
set { SetValue(CategoryNameProperty, value); }
} public static readonly DependencyProperty CategoryNameProperty =
DependencyProperty.Register("CategoryName", typeof(string), typeof(Histogram), new PropertyMetadata(null,new PropertyChangedCallback(CategoryNameChanged))); private static void CategoryNameChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var obj = d as Histogram;
if (obj != null && obj.CategoryName == "限值")
{
obj.rect1.Fill=new SolidColorBrush(Color.FromRgb(,,));
obj.rect2.Fill = new SolidColorBrush(Color.FromRgb(, , ));
obj.rect3.Fill = new SolidColorBrush(Color.FromRgb(, , ));
}
else
{
obj.rect1.Fill = new SolidColorBrush(Color.FromRgb(, , ));
obj.rect2.Fill = new SolidColorBrush(Color.FromRgb(, , ));
obj.rect3.Fill = new SolidColorBrush(Color.FromRgb(, , ));
}
}
}
<UserControl x:Class="RunTime.WPF.UserCtrl.KpiCtrl.Histogram"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="" d:DesignWidth="">
<Grid Height="">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width=""/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height=""/>
</Grid.RowDefinitions>
<Rectangle Fill="#AFD8F8" Grid.Column="" Grid.Row="" x:Name="rect1"/>
<Rectangle Fill="#87ADC4" Grid.Column="" Grid.Row="" x:Name="rect2">
<Rectangle.RenderTransform>
<SkewTransform AngleX="" AngleY=""></SkewTransform>
</Rectangle.RenderTransform>
</Rectangle>
<Rectangle Fill="#6F8BA1" Grid.Row="" Grid.Column="" x:Name="rect3">
<Rectangle.RenderTransform>
<SkewTransform AngleX="" AngleY=""></SkewTransform>
</Rectangle.RenderTransform>
</Rectangle>
</Grid>
</UserControl>

别忘了把将CategoricalDataPoint中的Category属性转换成绑定的属性

    /// <summary>
/// 柱图Category转换
/// </summary>
public class HistogramColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var cat = value as CategoricalDataPoint;
if (cat != null) return cat.Category.ToString();
return string.Empty;
} public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}

完工,看看3D柱图效果

 

【Telerik控件学习】-制作3D效果的柱状图(ChartView)的更多相关文章

  1. 【Telerik控件学习】-建立自己的图形编辑工具(Diagram)

    Telerik提供了RadDiagram控件,用于图形元素的旋转,拖拽和缩放.更重要的是,它还拓展了许多绑定的命令(复制,剪切,粘贴,回退等等). 我们可以用来组织自己的图形编辑工具. Step1.定 ...

  2. python之Tkinter控件学习

    转载自  http://www.cnblogs.com/kaituorensheng/p/3287652.html#_label0 阅读目录 1. 产品介绍 2. 设计规划 3. 相关知识 4. 源码 ...

  3. Android Material Design控件学习(三)——使用TextInputLayout实现酷市场登录效果

    前言 前两次,我们学习了 Android Material Design控件学习(一)--TabLayout的用法 Android Material Design控件学习(二)--Navigation ...

  4. [Swift通天遁地]二、表格表单-(4)使用系统自带的下拉刷新控件,制作表格的下拉刷新效果

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  5. MFC自绘控件学习总结

    前言:从这学期开始就一直在学习自绘控件(mfc),目标是做出一款播放器界面,主要是为了打好基础,因为我基础实在是很烂....说说我自己心得体会以及自绘控件的方法吧,算是吐槽吧,说的不对和不全的地方,或 ...

  6. MFC自绘控件学习总结第二贴---转

    首先感谢大家对第一帖的支持,应一些网友烈要求下面我在关于上一贴的一些补充和说明(老鸟可以无视)这一贴是实战+理论不知道第一帖的先看第一帖:http://topic.csdn.net/u/2011071 ...

  7. MFC自绘控件学习总结第二贴

    首先感谢大家对第一帖的支持,应一些网友烈要求下面我在关于上一贴的一些补充和说明(老鸟可以无视)这一贴是实战+理论不知道第一帖的先看第一帖:http://topic.csdn.net/u/2011071 ...

  8. DevExpress控件学习总结(转)

    DevExpress控件学习总结   1.Navigation & Layout 1.1 Bar Manager 如果想在窗体或用户控件(user control)上添加工具条(bars)或弹 ...

  9. DevExpress控件学习总结 z

    1.Navigation & Layout 1.1 Bar Manager 如果想在窗体或用户控件(user control)上添加工具条(bars)或弹出菜单(popup menus),我们 ...

随机推荐

  1. Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程序、Servlet生命周期】

    什么是Serlvet? Servlet其实就是一个遵循Servlet开发的java类.Serlvet是由服务器调用的,运行在服务器端. 为什么要用到Serlvet? 我们编写java程序想要在网上实现 ...

  2. Python编码_ASCII_Unicode_UTF-8

    获取一个字符的ASCII码值,使用内置函数 ord(),ASCII码占一个字节 ascii不能存中文 >>> # A 和 a 分别的对应的ASCII码值是 >>> ...

  3. jquery-post get 同步问题

    解决方法1: 在全局设置: $.ajaxSetup({ async : false }); 然后再使用get.post请求 $.get("register/RegisterState&quo ...

  4. 微服务~Eureka实现的服务注册与发现及服务之间的调用

    微服务里一个重要的概念就是服务注册与发现技术,当你有一个新的服务运行后,我们的服务中心可以感知你,然后把加添加到服务列表里,然后当你死掉后,会从服务中心把你移除,而你作为一个服务,对其它服务公开的只是 ...

  5. 快速搭建属于自己的数据库——mongodb

    为了真实模拟一个项目上线,拥有前端后端数据库都具备的功能,我选择了mongodb作为项目的数据库支持,这里分享一些mongodb的经验心得和血的教训. mongoddb安装 在本地安装 直接通过官网下 ...

  6. 修改host可以上的一些网站

    打开路径 C:\Windows\System32\drivers\etc 博客园 223.6.248.220 www.cnblogs.com github 192.30.253.112 github. ...

  7. C# readonly

    当某个字段是引用类型,并且该字段被标记为readonly时,不可改变的是引用,而非字段引用的对象,例如:

  8. BZOJ-5055-膜法师(离散化+树状数组)

    Description 在经历过1e9次大型战争后的宇宙中现在还剩下n个完美维度, 现在来自多元宇宙的膜法师,想偷取其中的三个维度为伟大的长者续秒, 显然,他能为长者所续的时间,为这三个维度上能量的乘 ...

  9. java泛型使用总结

    1. 泛型方法: 2. 泛型类: 3. 通配符. 1.泛型方法 泛型方法在调用时可以接收不同类型的参数.根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用. 下面是定义泛型方法的规则: 所有 ...

  10. C# Async/await 异步多线程编程

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...