WPF中类似Gantt的view / usercontrol,如何创建

时间:2013-11-13 16:18:20

标签: c# wpf

我需要在WPF中创建一个UserControl或View,它可以像在日历中一样显示标题中的天数,以及垂直显示的用户列表,以及每个用户都可以像放置一个计划栏一样显示在一个网格内,低于天数,这将显示该计划需要多少天。它类似于甘特视图,可从Telerik或DevExpress获得,但我不允许使用任何付费资源/控件/工具包。问题是我不知道如何开始,必须使用的布局是什么,控件是什么等。

喜欢这里: enter image description here

我尝试垂直创建一个ListView,每个用户都水平使用ItemsSource,但是在这种情况下我需要为每一行绑定,即使用户没有计划在那个时期进行任何计划,因此会导致太多无用绑定,此解决方案也不能调整到屏幕大小,除非您更改绑定的元素数量。

我需要在数据存在的地方展示一些东西,并且以类似于图像的方式展示。这意味着我需要一个容器控件,它将包括标题和泳道,计划将在泳道上显示。

此外,宽度必须是可调整的,因此用户拥有的屏幕越多,水平日期就越多。

我该如何创造呢?什么控制,我必须使用哪些控件?

我希望得到类似以下示例的答案: 容器控件:ListView水平 Swimlanes:GridView或Canvas 条形:简单矩形

提前谢谢!

修改

我找到了一个时间轴项目。它是开源的,有很好的例子。 CodePlex Timeline project

2 个答案:

答案 0 :(得分:5)

我会重新考虑第三方控制的事情;建立这个强大的将比购买它(取决于您的每小时成本)昂贵得多。

如果您想自己构建它,您将需要以下内容:

  • 内容水平和垂直滚动
  • 行和列中的标题分别垂直和水平滚动,与上一项同步。
  • 项目模板,连接器模板
  • 块之间的依赖关系管理形式(数据层次结构)。
  • 连接器的路由,它们需要位于单独的层中,因为它们跨越多个泳道。还需要合并多个箭头。

要求非常严格,你需要很多代码。

答案 1 :(得分:4)

我想在上面提出第二个Bas Brekelmans回复。您无法在任何合理的时间/成本中构建您在屏幕截图中显示的所有内容(依赖项,缩放时间轴,进度,调整大小以适应等)。为什么要在已经完成后重新发明轮子?

RadiantQ's WPF Gantt是一个非常全面的软件包,可以帮助您实现上面提到的所有内容,包括不同的行高,假期等。看一下基于Silverlight的online demo,但是功能类似于WPF Gantt。

您当然可以下载试用版。