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

WPF中的哪个表/网格控件?,wpf,.net-4.0,wpf-controls,epg,Wpf,.net 4.0,Wpf Controls,Epg,我希望显示表格数据(电视频道),但使用诸如DataGrid/UniformGrid/Table with FlowDocument/等选项。我不知道什么是最佳选项。主要问题是单元格的大小不一致,因为它随时间的长短而变化,我想在单元格之间加上填充物。此外,我只需要能够显示表格的一部分,并允许他们向上/向下/向右滚动以查看其余部分 什么是最好的WPF控制选项?这里有一个小的例子来说明我的目的。左上角的白色方块是我希望在开始时显示的,并允许他们滚动到它的其余部分 有几种方法可以完成您在这里要做的事情。

我希望显示表格数据(电视频道),但使用诸如DataGrid/UniformGrid/Table with FlowDocument/等选项。我不知道什么是最佳选项。主要问题是单元格的大小不一致,因为它随时间的长短而变化,我想在单元格之间加上填充物。此外,我只需要能够显示表格的一部分,并允许他们向上/向下/向右滚动以查看其余部分

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


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

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

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

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

如果您有性能问题,可以尝试使用。如果这仍然不能满足您的性能要求,那么您将需要对进行子类化,并对其进行调整以满足您的特定需求

有关面板性能的详细信息,请参见

我建议先尝试两种
StackPanel
方法,然后是
virtualizangstackpanel
方法,最后,如果不起作用,那么尝试
virtualizangpanel

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


对于滚动,请使用

我认为StackPanels将是最好的方法。非常感谢您的回答。我会接受这个并奖励赏金。我将使用带有滚动查看器的堆栈面板,但最好是在左侧有一个垂直堆栈面板,每个面板的侧面有一个用于EPG数据的水平堆栈面板,或者只是一块水平堆栈面板,每个通道一个,而在其中包含频道名称/图标?@BrettPowell我可能会有一个itemscontrol,其中stackpanel作为垂直频道的itemspanel(这是默认设置),然后是一个模板,其中频道的控件位于水平频道的stackpanel旁边。这将简化布局和绑定。我认为可以做出一些假设。每个单元格将代表30分钟(或者15分钟,因为有些程序可能很短,但这更多的是边缘情况)。因此,可以根据可用数据(程序的长度)假设单元的宽度。就我个人而言,这让我倾向于堆叠的堆叠面板,因为这在逻辑上是有意义的。那么包裹面板呢,你可以在其中添加一个滚动查看器来创建滚动,只要你把屏幕按顺序排列,并且具有相同的高度,面板的宽度和放置问题就会得到解决