由于项目中经常用到Series Chart,而目前市面又实在找不到既支持MVVM,又轻量级的开源Chart控件,于是干脆就花了两周时间随手写了一个。昨天感觉还比较满意,就发布到了Github上:https://github.com/zenjia/MvvmChart

特色:

  • 支持MVVM设计模式: 这也是其最大的特色,用户可以自定义SeriesDataTemplate,并支持SeriesDataTemplateSelector(具体信息见Github项目简介)。事实上,当初开发这套控件的初衷就是因为找不到开源的支持MVVM的WPF Chart控件;
  • 功能丰富:支持多种常用的Line Series(包括Polyline,StepLine,Spline)和Area Series(包括PolylineArea,StepLineArea,SplineArea),支持显示Item Point。坐标轴支持多重放置模式。支持GridLine,CrossHairs等;
  • 高度可定制:Series和Item Point的自定义都可以通过简单的Binding或修改Style来完成。坐标轴的Label文本支持ValueConverter,tick支持用户显示指定的数据。
  • 高度可扩展:主要的Series类都继承自基类PathSeries。用户可以通过实现IGeometryBuilder并将其传递给PathSeries的GeometryBuilder属性来创建自己的Series。理论上,用户可以自定义自己想要的任何类型,只要它可以通过Path来绘制,因此这种模式具有高度的可扩展性;
  • 轻量级:代码简洁,全部代码不到5k行。功能专注于常用的Cartesian 2D Series Chart,不包含饼状图、柱状图等可以简单通过ItemsControl来绘制的Chart

截图:

Line Series,无Item Point:(从上自下依次为PolylineSeries、StepLineSeries、SplineSeries)

Line Series,带Item Point:

Area Series,不带Item Point:

Area Series,带Item Point:

使用方法:

首先定义数据点:

    public class SomePoint
{
public double t { get; }
public double Y { get; }
} public class DemoDataViewModel
{
public List<List<SomePoint>> ItemsSourceList { get; }
}  

然后创建DataTemplate:

        <DataTemplate x:Key="SeriesTemplate1">
<mvvmCharting:PolyLineSeries IndependentValueProperty="t"
DependentValueProperty="Y"
Stroke="Red"
StrokeThickness="1.5"
ItemsSource="{Binding}">
</mvvmCharting:PolyLineSeries>
</DataTemplate>

最后,创建一个SeriesChart,并引用上面的DateTemplate:

   <mvvmCharting:SeriesChart Background="Bisque"
SeriesDataTemplate="{StaticResource SeriesTemplate1}"
SeriesItemsSource="{Binding ItemsSourceList, Source={StaticResource GlobalDemoDataViewModel}}"> <mvvmCharting:SeriesChart.XAxis>
<axis:XAxis />
</mvvmCharting:SeriesChart.XAxis> <mvvmCharting:SeriesChart.YAxis>
<axis:YAxis />
</mvvmCharting:SeriesChart.YAxis> </mvvmCharting:SeriesChart>

(更多使用Sample见项目里的Demo工程)

(对UWP的支持将很快加入)

(欢迎批评指正,欢迎提交bug)

这可能是目前最轻量级、最支持MVVM、可定制性最高的开源Chart控件!的更多相关文章

  1. Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)

    jquery提供的serialize方法能够实现. $("#searchForm").serialize();但是,观察输出的信息,发现serialize()方法做的是将表单中的数 ...

  2. WPF Prism MVVM 中 弹出新窗体. 放入用户控件

    原文:WPF Prism MVVM 中 弹出新窗体. 放入用户控件 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_37214567/artic ...

  3. 【我们一起写框架】MVVM的WPF框架(三)—数据控件

    这世上,没人能一次性写出完美无缺的框架:因为,任何一个框架都需要项目的淬炼,然后才能升华,趋近完美. 所以,框架是个反复修改的东西,最终形成的东西. 如果你学了一点技术,觉得自己可以写出框架了,觉得自 ...

  4. WPF|快速添加新手引导功能(支持MVVM)

    阅读导航 前言 案例一 案例二 案例三(本文介绍的方式) 如何使用? 控件如何开发的? 总结 1. 前言 案例一 站长分享过 眾尋 大佬的一篇 WPF 简易新手引导 一文,新手引导的效果挺不错的,如下 ...

  5. Silverlight项目笔记1:UI控件与布局、MVVM、数据绑定、await/async、Linq查询、WCF RIA Services、序列化、委托与事件

    最近从技术支持转到开发岗,做Silverlight部分的开发,用的Prism+MVVM,框架由同事搭好,目前做的主要是功能实现,用到了一些东西,侧重于如何使用,总结如下 1.UI控件与布局 常用的主要 ...

  6. 支持Angular 2的表格控件

    前端框架一直这最近几年特别火的一个话题,尤其是Angular 2拥有众多的粉丝.在2016年9月份Angular 2正式发布之后,大量的粉丝的开始投入到了Angular 2的怀抱.当然这其中也包括我. ...

  7. 为 ItemsControl 类型的控件提供行号,mvvm模式 绑定集合

    从网络上看到的两种方式,一种是,在 codebehind 里为 控件写事件,下面是将集合绑定到 DataGrid 控件: private void DataGridSoftware_LoadingRo ...

  8. 用MVVM模式开发中遇到的零散问题总结(4)——自制摄像头拍摄大头贴控件

    原文:用MVVM模式开发中遇到的零散问题总结(4)--自制摄像头拍摄大头贴控件 一直有个疑问,为什么silverlight对摄像头支持这么好,WPF却一个库都没有....于是我各种苦恼啊,各种Code ...

  9. CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09)

    事件的结果 经过多天的思考及忙碌的开发及测试,CYQ.Data 终于在UI上全面支持WPF,至此,CYQ.Data 已经可以方便支持wpf的开发,同时,框架仍保留最低.net framework2.0 ...

随机推荐

  1. Spring中各个模块

    Spring中个模块介绍 核心模块 ​ 提供了对Bean的配置.管理.创建等以及IOC/DI.如果只需要提供IOC/DI功能,只需要引入Beans和Core两个jar包 Core 包含Spring框架 ...

  2. 接入twitter第三方登陆接口遇到的一个问题

    本地开了 Shadowsocks,然后postman模拟的twitter的接口是请求成功的,然后用php-curl去请求网址,出现以下错误 Failed to connect to api.twitt ...

  3. 禅道 基于原lnmp 搭建

    禅道下载地址:https://www.zentao.net/download/zentaopms12.3.3-80243.html '' [root@5ig6m dev]# wget https:// ...

  4. 如何解决vue2.0 打包之后 打开index.html出现空白页

    如何解决vue2.0 打包之后 打开index.html出现空白页 1.打包之前修改三个文件       1.1.第一步,找到build文件,在webpack.prod.conf.js 第25行左右 ...

  5. CentOS下搭建VNC/TEAMVIEW/SSH无密码登录

    VNC 配置桌面 # 安装gnome桌面环境 yum groupinstall Desktop -y # 安装中文语言支持包(可选) yum groupinstall 'Chinese Support ...

  6. uni搜索功能实现

    uni搜索功能的实现

  7. 我与oracle的爱恨情仇(第一章)

    关于配置 问题一 可能是虚拟机桥接问题 问题解决的链接:[如何更改虚拟机桥接](https://jingyan.baidu.com/article/9113f81b7cfbd22b3214c790.h ...

  8. 关闭Win10窗口拖动到桌面边缘自动缩放功能

  9. charles 常用功能 (六)抓包结果列表指展示关注的接口(focus on 功能)

    添加关注的接口 2.启用关注接口,添加过滤的地址 3.重新抓包结果 不在上一步配置中的接口,都会隐藏在other host中

  10. 第十章、Qt Designer中的Spacers部件

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一. 引言 在Designer的部件栏中,有两种类型的Spacers部件,下图中上面布局中为一个水平 ...