我希望显示表格数据(电视频道),但使用DataGrid / UniformGrid / Table和FlowDocument /等选项。我无法弄清楚什么是最好的选择。主要问题是细胞的大小不均匀,因为它根据时间长短而变化,我想在它们之间加上填充物。此外,我只需要能够显示表格的一部分,并允许它们向上/向下/向右滚动以查看其余部分。
最好的WPF控制选项是什么?这是我想要的一个小例子。左上角的白色方块是我想要在开始时显示的,并允许它们滚动到其余部分。
答案 0 :(得分:3)
有几种方法可以完成你在这里尝试做的事情。如果性能不是问题,那么我会忽略虚拟化并尝试DockPanel
这里的缺点是您必须按顺序添加项目而不是按行添加它们。
另一种选择是使用两个堆叠面板(每个方向一个)。这解决了添加问题,但需要使用更多面板。
前两个选项都需要单个项目设置其高度/宽度。
最终选项(取决于网格的大小),将使用具有固定大小的行和列的网格,其中项目跨越行(使用rowspan属性)。这种方法的缺点是我不知道在xaml中为未指定数量的行/列创建此控件的任何好方法,因此您必须在代码中创建它以获得所需数量的行/列。
如果您遇到性能问题,可以尝试使用VirtualizingStackPanel。如果这仍然不符合您的性能要求,那么您需要继承VirtualizingPanel
并定制它以满足您的特定需求。
有关Panel性能的详细信息,请参阅here。
我建议先尝试两个StackPanel
方法,然后尝试VirtualizingStackPanel
方法,最后,如果不起作用,请尝试VirtualizingPanel
通过在每个子控件上设置Margin
属性,可以轻松完成填充。
滚动使用ScrollViewer