WPF中的哪个表/网格控件?

时间:2012-08-12 17:04:42

标签: wpf .net-4.0 wpf-controls epg

我希望显示表格数据(电视频道),但使用DataGrid / UniformGrid / Table和FlowDocument /等选项。我无法弄清楚什么是最好的选择。主要问题是细胞的大小不均匀,因为它根据时间长短而变化,我想在它们之间加上填充物。此外,我只需要能够显示表格的一部分,并允许它们向上/向下/向右滚动以查看其余部分。

最好的WPF控制选项是什么?这是我想要的一个小例子。左上角的白色方块是我想要在开始时显示的,并允许它们滚动到其余部分。

enter image description here

1 个答案:

答案 0 :(得分:3)

有几种方法可以完成你在这里尝试做的事情。如果性能不是问题,那么我会忽略虚拟化并尝试DockPanel这里的缺点是您必须按顺序添加项目而不是按行添加它们。

另一种选择是使用两个堆叠面板(每个方向一个)。这解决了添加问题,但需要使用更多面板。

前两个选项都需要单个项目设置其高度/宽度。

最终选项(取决于网格的大小),将使用具有固定大小的行和列的网格,其中项目跨越行(使用rowspan属性)。这种方法的缺点是我不知道在xaml中为未指定数量的行/列创建此控件的任何好方法,因此您必须在代码中创建它以获得所需数量的行/列。

如果您遇到性能问题,可以尝试使用VirtualizingStackPanel。如果这仍然不符合您的性能要求,那么您需要继承VirtualizingPanel并定制它以满足您的特定需求。

有关Panel性能的详细信息,请参阅here

我建议先尝试两个StackPanel方法,然后尝试VirtualizingStackPanel方法,最后,如果不起作用,请尝试VirtualizingPanel

通过在每个子控件上设置Margin属性,可以轻松完成填充。

滚动使用ScrollViewer