2013-03-13 61 views
2

我需要某种“数据网格”中的某种时间轴,并且该字符具有相当多的几行。在DataGrid中绘制的快速轻量级方法

https://www.dropbox.com/s/idz0zuk8u3jla11/img.PNG?m

我的DataGrid的左侧的作品非常好,因为只有文字。

右侧有一点点滞后。

实际上,我在时间线部分的第一个索引处有我的DataGridTemplateColumn。

我DataGridTemplateColumn使用我的UserControl作为DataTemplate,其中我画了我的线/矩形的整个线。这是有效的,因为我将对象的左边距设置为示例500,以便它出现在右边的其他列上...

usercontrol是一个简单的网格,我已将动态放置的矩形放置在该网格中。

其他列也是DataGridTemplateColumn,但它们是空的。

现在,我的想法是只做一个列,我可以放置一个大型的用户控件,并为该行绘制时间线。

这样做的最佳做法是什么?

谢谢

+0

你好,对于一个稍微偏离主题的问题抱歉,但你如何在DataGrid上绘制所有这些东西?你是在它上面创建一个画布还是使用OnRender()或其他东西? – szx 2015-02-18 03:13:44

回答

1

我看到你想制作一个时间线,那太棒了。我认为,也许一个网格不是这样做的最好的面板。我认为对于这种情况你应该实现你自己的自定义面板。制作自定义面板非常棒,因为您可以设置项目的显示方式,还可以添加动画或拖动行为。你可以看到这个网页:

另外我附上了一些我发现的面板链接,看一看,也许你可以找到有用的东西。

编辑


另一件事我忘了,你可以在任何的ItemsControl属性ItemsPanel设置,这样你可以使用你的面板与任何项目源,您可以在使用它,例如列表框。

+0

好的谢谢你的回答。 但我会留在datagrid,因为我不必处理滚动同步。使用两个控件很难实现,因为这些行具有不同的高度。 现在我改变了代码,让我自己在overritten函数OnRender中画出每一行。 datagrid包含时间线部分的单个列。 它工作得很好。 再次谢谢 这里是我的结果: http://s1.directupload.net/images/130315/i5edursc.png – 2013-03-15 08:36:59

+1

虽然可以说是罚款答案在写作的时候,前两个环节不再工作。考虑更新它。 – MickyD 2015-09-21 09:05:22

+0

感谢@Roy,已经上传了! – 2015-09-21 15:02:37