2012-06-17 16 views
1

我需要实现我的素描上显示的布局。我应该使用哪种控制方式来实现分离器的网格布局?

  1. 多列 - 用户可以调节宽度
  2. 垂直分成2个区域 - 用户可以调整heigth
  3. 每列将有内多个项目 - 我会用列表为

应该我为此使用Grid?还是DataGrid会更合适?我担心Grid会给我分配我想要的方式带来问题,但我不知道DataGrid是否会为这种情况“沉重”?

此外,一切都将是沉重的风格,这样做的轻松也很重要。

编辑:

忘了提几件事情:

  1. 列数将不固定,但将是有限的 - 高达7
  2. 我将注入意见到这些“细胞“
  3. 是否可以在MVVM场景中隐藏/显示列?我在想,如果我使用GridSplitter并绑定分割器可见性,那么只是因为我可以隐藏分割器并从列中移除内容,如果它的“宽度”设置为“自动” - 我将实现“隐藏”它的场景。

enter image description here

回答

1

恕我直言,考虑到列数是固定的,Grid是要走的路。你需要有一些逻辑来设置第一行的MaxHeight,这样用户将无法将水平分离器拖动到网格的底部(是的,我知道,它应该是默认行为...: ()。

同样适用于每一列的MaxWidth只有它更复杂,因为您必须考虑所有列的实际宽度此外,您还需要更新所有列的宽度。垂直分离器被拖动,因此网格的整体宽度保持不变。

DataGrid将会过度使用,并且您不会获得任何有价值的东西 - 首先查看垂直分离器将被照顾 - 但是然后您有滚动条,你必须考虑,禁用他们将米能够重新调整列的大小。此外,水平分离器只能在行标题中使用,而不能在控件的所有宽度上使用。此外,计算第一行的高度必须手动完成,然后在数据网格上以某种方式强制执行。

现在我想到了,我可能会使用自定义面板(MyPanel)和继承Thumb的自定义分割器(MySplitter)。

对于列表,我可能会去与HeaderedContentControl和自定义控件模板。

+0

谢谢!我稍微编辑了我的问题,可以给出这个额外的信息吗? – katit

+0

@katit - 嗯...你的编辑使它更加复杂,明天我会回复你。 – XAMeLi

+0

没关系这个。从我看到的每一个 - ItemsControl对我来说都是最好的选择。所以我创造了另一个问题:http://stackoverflow.com/questions/11074675/making-itemscontrol-childs-resizeable-with-a-splitter – katit

0

你可以使用任何你想要的控制。实际上,您可以使用特殊类的DataGrid,仅用于您的情况,它被称为GridSplitter(如本例中:CodeBetter)。您可以自定义单元格,甚至行DataTemplates存档最佳效果

+0

'GridSplitter'不能与'DataGrid'一起使用,只能在'Grid'内工作 – XAMeLi

+0

@XAMeLi - ok :)我的错误 – Jasper

相关问题