1

我需要实现草图上显示的布局。

  1. 多列 - 用户可以调整宽度
  2. 垂直分隔成 2 个区域 - 用户可以调整高度
  3. 每列将包含多个项目 - 我将使用 List

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

此外,所有内容都将采用重样式,因此易于操作也很重要。

编辑:

忘了提几件事:

  1. 列数不会固定,但会受到限制 - 最多 7 个
  2. 我会将观点注入那些“细胞”
  3. 是否可以在 MVVM 场景中隐藏/显示列?我在想,如果我使用 GridSplitter 并绑定拆分器可见性,那只是因为如果“宽度”设置为“自动”,我可以隐藏拆分器并从列中删除内容 - 我将实现“隐藏”它的场景。

在此处输入图像描述

4

2 回答 2

1

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

MaxWidth每列的 也是如此。只是它更复杂,因为您必须考虑所有列的实际宽度。此外,当拖动垂直拆分器之一时,您需要更新所有列的宽度,因此网格的整体宽度保持不变。

DataGrid将是矫枉过正,你不会获得任何有价值的东西 - 垂直分割器将被照顾,第一次看 - 但是你有你必须考虑的滚动条,禁用它们会弄乱重新调整列大小的能力。此外,水平拆分器仅在行标题中可用,而不是在控件的所有宽度上可用。此外,必须手动计算第一行的高度,然后以某种方式强制数据网格。

现在我考虑一下,我可能会使用一个自定义面板(MyPanel)和一个继承Thumb.

对于列表,我可能会使用HeaderedContentControl自定义控件模板。

于 2012-06-17T20:01:01.810 回答
0

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

于 2012-06-17T19:59:43.540 回答