在本文中,我们将使用WPF Diagram组件来构建鱼骨图,如下面引用的维基百科“Ishikawa图”文章中所述:

“Ishikawa图表(也称为鱼骨图,人字形图,因果图或Fishikawa)是Kaoru Ishikawa创建的因果图,显示了特定事件的原因。

Ishikawa图的常见用途是产品设计和质量缺陷预防,以确定导致整体效果的潜在因素。不完美的每个原因或原因都是变异的来源。原因通常分为主要类别,以识别和分类这些变异来源。

本教程将演示使用WPF图库创建相同的图表并编写几行代码是多么容易。这是最终的图表:

带有MindFusion WPF图库的WPF中的Ishikawa(鱼骨)图

I.一般设置

我们在Visual Studio中创建一个名为“Fishbone”的空WPF项目。在那里我们创建一个Assemblies文件夹,我们放置必要的dll-s:

  • MindFusion.Common.dll
  • MindFusion.Diagramming.Wpf.dll

然后在MainWindow.xaml文件中,我们创建一个映射到Diagramming命名空间:

然后我们在默认的Grid WPF控件中创建图表:

  Grid>

该代码创建了一个名为“fdiag” 的FishboneDiagram *类的新实例。我们可以使用此名称来访问代码中的对象。

II.图数据

FishboneDiagram类公开了一个ItemsSource属性,该属性为图提供数据。数据是一个对象,包含主要子句的标签和包含子条款标签的列表。我们创建了一个名为FBClause的特殊类,它将代表每个鱼骨:

public class FBCause{public FBCause(){SubCauses = new List();}public string Label { get; set; }

接下来,我们以这种方式创建必要的鱼骨:

var c1 = new FBCause { Label = "Measurements" };c1.SubCauses = new 

完成所有鱼骨之后,我们创建模型,它将作为fdiag对象的数据源:

var model = new List { c1, c2, c3, c4, c5, c6 };

III.构建图表

现在数据已准备就绪,我们可以将它分配给FishboneDiagram类的ItemsSource属性:

fdiag.ItemsSource = model;

我们将使用LabelPath和SubCausesPath属性将FBClause对象的相应字段绑定到FishboneDiagram的正确数据属性:

fdiag.LabelPath 

如果您的模型的子条款是对象而不是我们的FBClause类中的字符串,则应使用SubLabelPath属性来设置将为子条款标签提供数据的字段的名称。

最后,我们调用图的ResizeToFitItems方法来确保所有鱼骨都可见:

fdiag.ResizeToFitItems(30);

编译并运行样本,您将看到完美的鱼骨图。您可以从此链接下载示例以及所有必需的dll-s:

在WPF示例中下载MindFusion Fishbone(Ishikawa)图

* FishboneDiagram类将与WPF Diagram Tool的下一版本正式发布。 关于WPF的图表:这是在WPF中创建始终满足您要求的流程图的正确工具。该库提供100多个预定义的节点形状,广泛的事件集和超过15个出口商和进口商。您构建的每个图表都具有完全可自定义的流程图的每个部分的样式,主题和外观属性外观。众多示例和详细文档可帮助您快速了解如何将组件集成到您自己的应用程序中。

点击“了解更多”下载产品最新试用版

↓↓↓

wpf tabitem 点击事件_Mindfusion教程:WPF中的Fishbone(Ishikawa)图相关推荐

  1. android列表集合点击事件,给ListeView列表中的每一个Item添加点击事件

    首先声明本文主要是在ArrayAdapter.SimpleAdapter中对ListView的每一项进行点击事件! 先看下运行结果 第一步:在xml布局中写一个ListView android:lay ...

  2. 日期控件的点击事件,在js中添加callback属性,不在html中直接添加

    总结如下: 1. callback的data是点击事件(事件控件)完成后的回调的日期 2. return true后才能改变值,return false不能改变值 3. \ 是转义,因为在" ...

  3. react中绑定点击事件_在React中绑定事件处理程序的最佳方法

    react中绑定点击事件 by Charlee Li 通过李李 在React中绑定事件处理程序的最佳方法 (The best way to bind event handlers in React) ...

  4. html表格td点击事件,监听layui中的table中的td点击事件

    上图 就是用layui生成的一个table表格; 在这里我们给td绑定class,再通过jq的方式去监听是不可行的; 会监听不到事件; 不过在layui中,给了监听方法,并且还可以获取到该行所有的数据 ...

  5. button layui 点击事件_解决layui中的form表单与button的点击事件冲突问题

    解决layui中的form表单与button的点击事件冲突问题 layui的form表单位置和button标签的位置重合,会使得button的click事件得不到响应,如图: 蓝色底为form的位置, ...

  6. vue中 点击事件的写法_vue中的事件:原生事件与自定义事件__Vue.js

    模板编译 processAttrs 对于ast attributes处理(v-on/@) 利用onRE与dirRE来捕获事件 这里最重要的就是dynamic的判断,vue中可以用动态参数来命名事件名称 ...

  7. python鼠标点击事件event_opencv-python教程学习系列5-处理鼠标事件

    前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍opencv-python处理鼠标事件,坚持学习,共同进步. 系统环境 系统:win_x64; p ...

  8. android点击事件的优先级,android中进程的优先级

    visual studio运行时库MT.MTd.MD.MDd的研究(转载) 转载:http://blog.csdn.net/ybxuwei/article/details/9095067 转载:htt ...

  9. vue点击事件添加html,vue 中拼接html时添加点击事件

    添加 1111 export default { data() { return { tooltip:"test", }; }, methods: { hahha(){ var i ...

最新文章

  1. Java查询spark中生成的文件,spark原代码生成方法
  2. Linux Command Line 解析
  3. ieee39节点系统介绍_Java秒杀系统实战系列-基于ZooKeeper的分布式锁优化秒杀逻辑...
  4. pytorch中的torch.rand(),torch.randn(),torch.randerm()的关系
  5. JS-循环(while,for,嵌套)-跳转语句(break,continue)
  6. nginx学习(一):基本安装
  7. emacs .emacs_谁在乎Emacs?
  8. java ssh环境 eclipse_SSH在eclipse中环境搭建
  9. 语音性别识别_语音识别识别性别_语音文字识别 - 云+社区 - 腾讯云
  10. 【知识索引】【汇编语言】
  11. java jdk 8 中文文档
  12. 【Python爬虫实战】 图片爬虫-淘宝图片爬虫--千图网图片爬虫
  13. win10 外接显示器后出现input signal out of range
  14. Elasticsearch 使用初级入门 【入门篇】
  15. Word2013论文的目录和页眉页脚设置
  16. 【Python 实战基础】如何实现一个英汉翻译小字典
  17. go项目部署服务器保姆级教程(带图)
  18. 1+X Web前端开发初级考试 模拟试题(一)
  19. 详图讲解U盘安装windows8系统
  20. Geany设置全黑色主题

热门文章

  1. vue路由跳转动画_Vue路由跳转动画
  2. openGauss Summit 2021云和恩墨分论坛即将开启
  3. MapReduce Service更换集群外部时钟源,仅需10步
  4. 技术干货丨隐私保护下的迁移算法
  5. 【昇腾学院】昇腾AI处理器软件栈--框架管理器(Framework)离线模型生成
  6. 【华为云分享】应用系统迁移华为云评估
  7. 不花钱、不买服务器可以搭建个人博客吗?快进来,给你安排!
  8. 用计算机计算麦克斯韦方程,数学之美~(01)最伟大的数学公式!
  9. hbuild 编译 php,Hbuilder的PHP环境搭建
  10. 代数学笔记10: Galois基本定理,Galois群与方程求解