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