wpf devexpress 添加GanttControl到项目

这个教程示范如何添加GanttControl 到你的项目使用内置GanttControl数据类。

要求

添加 Devexpress.Wpf.Gantt Nuget包到你的项目使用GanttControl.

数据模型

GanttControl携带和内置数据对象,可以使用创建视图模型:

GanttTask

呈现甘特图任务

GanttPredecessorLink

呈现任务关系

GanttTask类曝光如下属性:

属性描述
Id指定任务id
ParentId指定任务父id
StartDate指定任务开始日期
FinishDate指定任务结束日期
Progress指定任务进程
Name指定任务名称和标题
BaselineStartDate指定任务基线开始日期
BaselineFinishDate指定任务基线完成日期
PredecessorLinks提供访问任务记录集合

Id和ParentId属性允许组织任务等级体系在空白数据集合

GanttPredecessorLink提供如下属性

属性描述
PredecessorTask Id指定访问记录Id
LinkType指定任务关系类型(完成ToStart,FinishToFinish,等等)
Lag指定依赖时间lag

添加视图模型

创建视图模型类暴露Tasks属性ObservableCollection<GanttTask>类型

代码例子如下示范了视图模型

using DevExpress.Mvvm.Gantt;
using System;
using System.Collections.ObjectModel;namespace GanttControlDemoApp {public class ProjectTaskViewModel {public ObservableCollection<GanttTask> Tasks { get; set; }public ProjectTaskViewModel() {Tasks = new ObservableCollection<GanttTask> {new GanttTask() {Id = 0,Name = "Add a new feature",StartDate = DateTime.Now.AddDays(-1),FinishDate = DateTime.Now.AddDays(6)},new GanttTask() {Id =1, ParentId = 0,Name = "Write the code",StartDate = DateTime.Now.AddDays(-1),FinishDate = DateTime.Now.AddDays(2)},new GanttTask() {Id = 2,ParentId = 0,Name = "Write the docs",StartDate = DateTime.Now.AddDays(2),FinishDate = DateTime.Now.AddDays(5)},new GanttTask() {Id = 3,ParentId = 0,Name = "Test the new feature",StartDate = DateTime.Now.AddDays(2),FinishDate = DateTime.Now.AddDays(5)},new GanttTask() {Id = 4,ParentId = 0,Name = "Release the new feature",StartDate = DateTime.Now.AddDays(5),FinishDate = DateTime.Now.AddDays(6),}};}}
}

添加Gantt Control到视图

添加GanttControl到项目

打开vs工具箱,找到DX.18.2:Data & Analytics 页面,拖动GanttControl 工具箱内容,拖动到window控件

传递视图模型到视图DataContext属性,绑定GanttControl的ItemsSource属性到视图模型Task属性

<Windowxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:GanttControlDemoApp"xmlns:dxgn="http://schemas.devexpress.com/winfx/2008/xaml/gantt" x:Class="GanttControlDemoApp.MainWindow"><Window.DataContext><local:ProjectTaskViewModel /></Window.DataContext><Grid><dxgn:GanttControl ItemsSource="{Binding Tasks}" /></Grid>
</Window> 

图片如下演示了结果

GanttControl显示统计任务和折叠子任务。显示数据行和任务属性和显示所有任务

添加任务行

使用控件的GanttControl.Columns属性添加行

甘特图行显示通过GanttColumn类。绑定行到任何任务标准属性使用BindTo 属性。像如下代码

<dxgn:GanttControl ItemsSource="{Binding Tasks}"><dxgn:GanttControl.Columns><dxgn:GanttColumn BindTo="Name" /><dxgn:GanttColumn BindTo="StartDate" /><dxgn:GanttColumn BindTo="FinishDate" /></dxgn:GanttControl.Columns>
</dxgn:GanttControl>

设置GanttView

GanttView指定甘特图表内容和显示

扩展所有甘特图任务当控件加载。设置AutoExpandAllNodes属性为true。可以显示和编辑和排序内容被设置视图AllowEditing和AllowSorting属性为false,像下面的代码例子

<Windowxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:GanttControlDemoApp"xmlns:dxgn="http://schemas.devexpress.com/winfx/2008/xaml/gantt" x:Class="GanttControlDemoApp.MainWindow"><Window.DataContext><local:ProjectTaskViewModel /></Window.DataContext><Grid><dxgn:GanttControl ItemsSource="{Binding Tasks}"><dxgn:GanttControl.Columns><dxgn:GanttColumn BindTo="Name" /><dxgn:GanttColumn BindTo="StartDate" /><dxgn:GanttColumn BindTo="FinishDate" /></dxgn:GanttControl.Columns><dxgn:GanttControl.View><dxgn:GanttView AutoExpandAllNodes="True" AllowEditing="False" AllowSorting="False"/></dxgn:GanttControl.View></dxgn:GanttControl></Grid>
</Window>

下面的图片演示了结果

任务依赖

每一个任务暴露了PredecessorLinks属性。属性提供了访问GanttPredecessorLink集合对象。每一个GanttPredecessorLink对象包含任务访问记录id和相对的链接类型

添加如下代码到视图模型

// the "Release the new feature" task can begin only when the "Write the docs" task is complete
Tasks[4].PredecessorLinks.Add(new GanttPredecessorLink() { PredecessorTaskId = 2, LinkType = PredecessorLinkType.FinishToStart });
// the "Release the new feature" task can begin only when the "Test the new feature" task is complete
Tasks[4].PredecessorLinks.Add(new GanttPredecessorLink() { PredecessorTaskId = 3, LinkType = PredecessorLinkType.FinishToStart });
// the "Write the docs" task can begin only when the "Write the code" task is complete
Tasks[2].PredecessorLinks.Add(new GanttPredecessorLink() { PredecessorTaskId = 1, LinkType = PredecessorLinkType.FinishToStart });
// the "Test the new feature" task can begin only when the "Write the code" task is complete
Tasks[3].PredecessorLinks.Add(new GanttPredecessorLink() { PredecessorTaskId = 1, LinkType = PredecessorLinkType.FinishToStart });

现在,GanttControl显示任务关系。如下图片显示结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/196005.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BUUCTF 被偷走的文件 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 一黑客入侵了某公司盗取了重要的机密文件&#xff0c;还好管理员记录了文件被盗走时的流量&#xff0c;请分析该流量&#xff0c;分析出该黑客盗走了什么文件。 密文&#xff1a; 下载附件&#xff0c;解压得到一个…

unity中的模型坐标系与3dmax导出的模型坐标系不一致的解决方案

unity中的模型坐标系与3dmax导出的模型坐标系不一致的解决方案 unity是左手坐标系&#xff0c;3dmax为右手坐标系 需要在3dmax中修改坐标系 顶视图中改成&#xff1a;X轴&#xff08;红色&#xff09;向右&#xff1a; Y轴&#xff08;蓝色&#xff09;朝向自己: Z轴&#xff…

Spring Boot 中使用 ResourceLoader 加载资源的完整示例

ResourceLoader 是 Spring 框架中用于加载资源的接口。它定义了一系列用于获取资源的方法&#xff0c;可以处理各种资源&#xff0c;包括类路径资源、文件系统资源、URL 资源等。 以下是 ResourceLoader 接口的主要方法&#xff1a; Resource getResource(String location)&am…

Linux常用命令——bzcat命令

在线Linux命令查询工具 bzcat 解压缩指定的.bz2文件 补充说明 bzcat命令解压缩指定的.bz2文件&#xff0c;并显示解压缩后的文件内容。保留原压缩文件&#xff0c;并且不生成解压缩后的文件。 语法 bzcat(参数)参数 .bz2压缩文件&#xff1a;指定要显示内容的.bz2压缩文…

【Coppeliasim】 通过TCP与coppeliasim通信

仿真客户端&#xff0c; 代码中启动了tcp服务器。 simrequiresim socketrequiresocket-- 以下函数将数据写入套接字&#xff08;仅为简单起见只处理单个数据包&#xff09;&#xff1a; writeSocketDatafunction(client,data)local headerstring.char(59,57,math.mod(#data,25…

ubuntu20.04在docker下运行ros-noetic

经常折腾虚拟机各双系统 &#xff0c; 想着不如把docker利用起来&#xff0c;下面算是一个初学者使用docker运行ros的记录&#xff1a; 1. 安装 使用官方安装脚本自动安装 curl -fsSL https://test.docker.com -o test-docker.shsudo sh test-docker.sh验证是否安装成功 doc…

新材料企业ERP有几种?能帮助企业解决哪些问题

在我们的生活当中会遇到各种各样的新材料&#xff0c;这些新材料对应不同的制造工艺、品质检验标准、生产工序、制造设备等。有些新材料企业的营销渠道不止一个&#xff0c;各个营销平台的经营策略和商品维护流程各不相同&#xff0c;而这也使得日常的管理工作量较大。 经过多…

工业机器人“智能制造产线6”教学案例

​智能制造单元主要以智能制造技术推广应用实际与发展需求为设计依据&#xff0c;按照“设备自动化生产精益化管理信息化人工高效化”的构建理念&#xff0c;将数控加工设备、工业机器人、检测设备、数据信息采集管控设备等典型加工制造设备&#xff0c;集成为智能制造单元“硬…

HIS医疗项目

文章目录 医疗项目简介HIS项目介绍HIS架构解析HIS业务流程图HIS项目架构图 HIS组件解析——服务支撑 内存设置为4G或以上部署NGINX服务部署web安装JDK部署Elasticsearch安装ik中文分词器 部署rabbitmq部署MySQL服务安装MySQL服务建库、授权用户导入数据 部署Redis测试Redis 部署…

在线 sha1 加密

ttmd5 http://www.ttmd5.com/hash.php?type5 qqxiuzi https://www.qqxiuzi.cn/bianma/sha-1.htm jb51 http://tools.jb51.net/password/sha_encode

基于SpringBoot+Vue的新能源汽车充电桩管理系统

基于SpringBootVue的新能源汽车充电桩管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 主页 充电桩详情 管理员界面 摘要 本项目是基于Spring Boot 和 …

解决requests库中的期限处理问题:从404到异常再到修复

目录 引言 一、了解HTTP 404错误 二、问题分析 三、解决方法 1、控制请求频率 2. 使用代理服务器 3、异常处理与重试机制 4、修复问题源头 5、联系目标网站管理员 四、总结 引言 在利用Python的requests库进行网络爬虫或API请求时&#xff0c;我们有时会遇到“HTTP …

天猫精灵/小爱同学+巴法云+Openwrt控制局电脑/群晖开关机

天猫精灵/小爱同学巴法云Openwrt控制局电脑/群晖开关机 事情的起因实战环境开始发车1.天猫精灵/小爱同学 连接 八法云 2.openwrt3.docker环节注意:sshpass 要先使用 ssh命令登陆一下你要唤醒或者远程关机的设备,不然可能因为一个登陆提示你是否登陆的yes/no导致程序没有反应,然…

(论文阅读40-45)图像描述1

40.文献阅读笔记&#xff08;m-RNN&#xff09; 简介 题目 Explain Images with Multimodal Recurrent Neural Networks 作者 Junhua Mao, Wei Xu, Yi Yang, Jiang Wang, Alan L. Yuille, arXiv:1410.1090 原文链接 http://arxiv.org/pdf/1410.1090.pdf 关键词 m-RNN、…

【Linux】Linux进程间通信(三)

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;Linux &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【Linux】…

Python:函数篇(每周练习)

编程题&#xff1a; Python第四章作业&#xff08;初级&#xff09; (educoder.net) 题一&#xff1a;无参无返回值函数 def print_hi_human(): # 函数名用小写字母print("人类&#xff0c;你好&#xff01;")if __name__ __main__:print_hi_human() 题二&#…

在python中os.chdir()的含义以及用法

文章目录 一、os.chdir() 是什么&#xff1f;二、用法注意 一、os.chdir() 是什么&#xff1f; 在Python中&#xff0c;os.chdir() 是 “change directory” 的缩写&#xff0c;意思是改变当前工作目录。这个函数是Python的 os 模块的一部分&#xff0c;允许你更改程序的工作目…

2023.11.16 hivesql高阶函数之开窗函数

目录 1.开窗函数的定义 2.数据准备 3.开窗函数之排序 需求:用三种排序方法查询学生的语文成绩排名,并降序显示 4.开窗函数分组 需求:按照科目来分类,使用三种排序方式来排序学生的成绩 5.聚合函数与分组配合使用 6.聚合函数同时和分组以及排序关键字配合使用 --需求1&…

MAC电脑连接外接显示屏,颜色显示有问题,又粉、紫色蒙版,问题处理(1)

问题描述 买了一个显示器&#xff0c;想给mac做分屏使用&#xff0c;结果连上之后发现&#xff0c;整个屏幕像是被蒙上了一层紫色的蒙版。 就像下面展示的一样&#xff1a; 解决 将显示器颜色空间改为RGB颜色空间即可。 打开显示器菜单&#xff0c;找到颜色空间选项&#…

12.Oracle的索引

Oracle11g的索引 一、什么是索引二、索引的分类三、索引的语法四、分析索引四、索引的作用及使用场景 一、什么是索引 在Oracle数据库中&#xff0c;索引是一种特殊的数据结构&#xff0c;用于提高查询性能和加速数据检索。索引存储了表中某列的值和对应的行指针&#xff0c;这…