Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以编程方式设置TableCell/TableRow页边距_C#_.net_Flowdocument - Fatal编程技术网

C# 以编程方式设置TableCell/TableRow页边距

C# 以编程方式设置TableCell/TableRow页边距,c#,.net,flowdocument,C#,.net,Flowdocument,这必须是非常简单的事情,但它让我发疯。我有一个以编程方式创建的表。表有多行,我想控制每行之间的间距。我认为更改段落边距会起作用,但单元格仍有边距。这就是我正在做的 Table tb = new Table(); tb.Columns.Add(new TableColumn()); tb.RowGroups.Add(new TableRowGroup()); TableRow tr = new TableRow(); Paragraph p1 = new Paragraph(new Run("A"

这必须是非常简单的事情,但它让我发疯。我有一个以编程方式创建的表。
有多行,我想控制每行之间的间距。我认为更改
段落
边距
会起作用,但单元格仍有边距。这就是我正在做的

Table tb = new Table();
tb.Columns.Add(new TableColumn());
tb.RowGroups.Add(new TableRowGroup());
TableRow tr = new TableRow();
Paragraph p1 = new Paragraph(new Run("A"));
p1.Margin = new Thickness(0);
tr.Cells.Add(new TableCell(p1));
tb.RowGroups[0].Rows.Add(tr);
tr = new TableRow();
p1 = new Paragraph(new Run("A"));
p1.Margin = new Thickness(0);
tr.Cells.Add(new TableCell(p1));
tb.RowGroups[0].Rows.Add(tr);
flowDoc.Blocks.Add(tb);
我试图创建一个TableCell对象并设置
Padding=new Thickness(0)但这没有任何效果

注意:我很难看到额外的空间。如果你加上两段空白为0的话,你会发现实际上有空格的差别

p1 = new Paragraph(new Run("B"));
p1.Margin = new Thickness(0);
flowDoc.Blocks.Add(p1);
p1 = new Paragraph(new Run("B"));
p1.Margin = new Thickness(0);
flowDoc.Blocks.Add(p1);

编辑:有人认为这是数字和字母大小不同的问题。所以我把这两个例子都改成了字母,表示发生了同样的事情

编辑2:回复Ed Plunkett:您的XMAL示例对我没有好处,因为它需要通过编程方式创建。然而,我确实采纳了你的想法,并且确实让它更清楚地表明单元格或行正在添加一个空格。我在第一段加了红色,而在第二段加了金色


我打赌这是一个简单的解决方案:

Table tb = new Table() { CellSpacing = 0 };
这是我的理由。它看起来像是表。单元格间距默认为2:

<Grid>
    <Grid.RenderTransform>
        <ScaleTransform ScaleX="2" ScaleY="2" />
    </Grid.RenderTransform>
    <FlowDocumentScrollViewer>
        <FlowDocument>
            <FlowDocument.Blocks>
                <Table x:Name="MyTable">
                    <Table.Columns>
                        <TableColumn />
                    </Table.Columns>
                    <Table.RowGroups>
                        <TableRowGroup>
                            <TableRow>
                                <TableCell Background="Pink">
                                    <Paragraph Background="LightBlue">
                                        <Run Background="PaleGoldenrod">0123456789Aj</Run>
                                    </Paragraph>
                                </TableCell>
                            </TableRow>
                            <TableRow>
                                <TableCell Background="Pink">
                                    <Paragraph Background="LightBlue">
                                        <Run Background="PaleGoldenrod">0123456789Aj</Run>
                                    </Paragraph>
                                </TableCell>
                            </TableRow>
                        </TableRowGroup>
                    </Table.RowGroups>
                </Table>
                <Paragraph Background="LightSkyBlue" Margin="0">
                    <Run>0123456789Aj</Run>
                </Paragraph>
                <Paragraph Background="LightSkyBlue" Margin="0">
                    <Run>0123456789Aj</Run>
                </Paragraph>
            </FlowDocument.Blocks>
        </FlowDocument>
    </FlowDocumentScrollViewer>
    <Label Content="{Binding CellSpacing, ElementName=MyTable}" />
</Grid>

0123456789Aj
0123456789Aj
0123456789Aj
0123456789Aj

所以如果我在XAML中将它设置为零

<Table x:Name="MyTable" CellSpacing="0">


根据字体的不同,数字可能比大写字母占用更少的垂直空间。@Ed Plunkett我将两者都改为字母,以表明情况并非如此啊,谢谢。我明白你的意思。试着在桌子上设置CellSpacing=0。看起来它默认为2。@Xaphan太棒了!