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