gpt4 book ai didi

WPF - FlowDocument - 将表格拉伸(stretch)到整个宽度?

转载 作者:行者123 更新时间:2023-12-04 12:24:45 41 4
gpt4 key购买 nike

我有一个 DataTable,其中包含我要打印的任意数量的列和行。到目前为止,我最好的运气是将数据放入表中,然后将表添加到 FlowDocument。

到现在为止还挺好。我现在遇到的问题是表格只“想要”占据文档宽度的大约一半。我已经为 FlowDocument 的 PageWidth 和 ColumnWidth 属性设置了适当的值,但是 Table 似乎不想拉伸(stretch)以填满分配的空间?

最佳答案

为了将您的 FlowDocument 内容设置为完整的可用宽度,您必须首先知道页面的宽度。您需要设置的用于处理内容长度的属性是 列宽 FlowDocument 上的 Prop 。

我通常创建一个“PrintLayout”帮助程序类来保留页面宽度/高度和填充的已知预设。 Wou 可以从 Ms Word 中嗅探预设并填充更多。

PrintLayout 的类

public class PrintLayout
{
public static readonly PrintLayout A4 = new PrintLayout("29.7cm", "42cm", "3.18cm", "2.54cm");
public static readonly PrintLayout A4Narrow = new PrintLayout("29.7cm", "42cm", "1.27cm", "1.27cm");
public static readonly PrintLayout A4Moderate = new PrintLayout("29.7cm", "42cm", "1.91cm", "2.54cm");

private Size _Size;
private Thickness _Margin;

public PrintLayout(string w, string h, string leftright, string topbottom)
: this(w,h,leftright, topbottom, leftright, topbottom) {
}

public PrintLayout(string w, string h, string left, string top, string right, string bottom) {
var converter = new LengthConverter();
var width = (double)converter.ConvertFromInvariantString(w);
var height = (double)converter.ConvertFromInvariantString(h);
var marginLeft = (double)converter.ConvertFromInvariantString(left);
var marginTop = (double)converter.ConvertFromInvariantString(top);
var marginRight = (double)converter.ConvertFromInvariantString(right);
var marginBottom = (double)converter.ConvertFromInvariantString(bottom);
this._Size = new Size(width, height);
this._Margin = new Thickness(marginLeft, marginTop, marginRight, marginBottom);

}


public Thickness Margin {
get { return _Margin; }
set { _Margin = value; }
}

public Size Size {
get { return _Size; }
}

public double ColumnWidth {
get {
var column = 0.0;
column = this.Size.Width - Margin.Left - Margin.Right;
return column;
}
}
}

接下来在您的 FlowDocument 上,您可以设置预设

在 Xaml
<FlowDocument x:Class="WpfApp.MyPrintoutView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WpfApp"
mc:Ignorable="d"
PageHeight="{Binding Height, Source={x:Static local:PrintLayout.A4}}"
PageWidth="{Binding Width, Source={x:Static local:PrintLayout.A4}}"
PagePadding="{Binding Margin, Source={x:Static local:PrintLayout.A4}}"
ColumnWidth="{Binding ColumnWidth, Source={x:Static local:PrintLayout.A4}}"
FontFamily="Segoe WP"
FontSize="16" ColumnGap="4">
<!-- flow elements -->
</FlowDocument>

通过代码
FlowDocument result = new WpfApp.MyPrintoutView();   
result.PageWidth = PrintLayout.A4.Size.Width;
result.PageHeight = PrintLayout.A4.Size.Height;
result.PagePadding = PrintLayout.A4.Margin;
result.ColumnWidth = PrintLayout.A4.ColumnWidth;

关于WPF - FlowDocument - 将表格拉伸(stretch)到整个宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4857754/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com