如何设置 WPF FlowDocument 的原始宽度
我有这样的 XAML 结构:
<wft:Dialog x:Class="WFT.PumpSvc.Bench.Parts.PartsPullListDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wft="http://schemas.Weatherford.com">
<wft:Dialog.Resources>
<ResourceDictionary Source="../Resources.xaml" />
</wft:Dialog.Resources>
<wft:CaptionedBox Style="{StaticResource HeaderCaptionedBox}" Name="captionedBox" Caption="Parts Pull List">
<DockPanel>
<DockPanel DockPanel.Dock="Right">
<StackPanel Orientation="Vertical" DockPanel.Dock="Top">
<wft:TouchButton Name="closeButton">Cancel</wft:TouchButton>
</StackPanel>
<StackPanel Orientation="Vertical" VerticalAlignment="Bottom">
<wft:TouchButton Name="printButton">Print</wft:TouchButton>
</StackPanel>
</DockPanel>
<wft:CaptionedBox Caption="Preview">
<FlowDocumentPageViewer Name="documentReader">
<FlowDocument Background="White">
<Paragraph FontSize="20" FontWeight="Bold">Parts Pull List</Paragraph>
<Table FontWeight="Bold">
<Table.Columns>
<TableColumn Width="*" />
<TableColumn Width="2*" />
</Table.Columns>
<TableRowGroup>
<TableRow>
<TableCell>...
<TableCell>...
</TableRow>
<TableRow>...
<TableRow>...
</TableRowGroup>
</Table>
<Table>
<Table.Columns>
<TableColumn Width="1*" />
<TableColumn Width="1*" />
<TableColumn Width="1*" />
<TableColumn Width="1*" />
<TableColumn Width="1*" />
<TableColumn Width="1*" />
<TableColumn Width="1*" />
</Table.Columns>
<TableRowGroup Name="partRowGroup">
<TableRow>
<TableCell>
<Paragraph>
<Underline>SubAssembly Type</Underline>
</Paragraph>
</TableCell>
<TableCell>...
<TableCell>...
<TableCell>...
<TableCell>...
<TableCell>...
<TableCell>...
</TableRow>
</TableRowGroup>
</Table>
</FlowDocument>
</FlowDocumentPageViewer>
</wft:CaptionedBox>
</DockPanel>
</wft:CaptionedBox>
</wft:Dialog>
如您所见,我的页面上没有任何宽度设置。但是,我的表格仅占据 FlowDocument 中水平空间的一半。是什么控制着这个?
I have this XAML structure:
<wft:Dialog x:Class="WFT.PumpSvc.Bench.Parts.PartsPullListDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wft="http://schemas.Weatherford.com">
<wft:Dialog.Resources>
<ResourceDictionary Source="../Resources.xaml" />
</wft:Dialog.Resources>
<wft:CaptionedBox Style="{StaticResource HeaderCaptionedBox}" Name="captionedBox" Caption="Parts Pull List">
<DockPanel>
<DockPanel DockPanel.Dock="Right">
<StackPanel Orientation="Vertical" DockPanel.Dock="Top">
<wft:TouchButton Name="closeButton">Cancel</wft:TouchButton>
</StackPanel>
<StackPanel Orientation="Vertical" VerticalAlignment="Bottom">
<wft:TouchButton Name="printButton">Print</wft:TouchButton>
</StackPanel>
</DockPanel>
<wft:CaptionedBox Caption="Preview">
<FlowDocumentPageViewer Name="documentReader">
<FlowDocument Background="White">
<Paragraph FontSize="20" FontWeight="Bold">Parts Pull List</Paragraph>
<Table FontWeight="Bold">
<Table.Columns>
<TableColumn Width="*" />
<TableColumn Width="2*" />
</Table.Columns>
<TableRowGroup>
<TableRow>
<TableCell>...
<TableCell>...
</TableRow>
<TableRow>...
<TableRow>...
</TableRowGroup>
</Table>
<Table>
<Table.Columns>
<TableColumn Width="1*" />
<TableColumn Width="1*" />
<TableColumn Width="1*" />
<TableColumn Width="1*" />
<TableColumn Width="1*" />
<TableColumn Width="1*" />
<TableColumn Width="1*" />
</Table.Columns>
<TableRowGroup Name="partRowGroup">
<TableRow>
<TableCell>
<Paragraph>
<Underline>SubAssembly Type</Underline>
</Paragraph>
</TableCell>
<TableCell>...
<TableCell>...
<TableCell>...
<TableCell>...
<TableCell>...
<TableCell>...
</TableRow>
</TableRowGroup>
</Table>
</FlowDocument>
</FlowDocumentPageViewer>
</wft:CaptionedBox>
</DockPanel>
</wft:CaptionedBox>
</wft:Dialog>
As you see, I don't have any width settings on my page. However, my Tables only occupy half the horizontal space in the FlowDocument. What controls this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
设置 FlowDocument ColumnWidth="999999"
Set the FlowDocument ColumnWidth="999999"
FlowDocument 对象支持您在 PageWidth、PagePadding 属性中寻找的功能。 ColumnWidth 属性不会影响页面宽度,而是建议或强制执行列在页面宽度范围内的布局方式。
有关该主题的博客的更多详细信息:
完整博客文章此处
MSDN 上的 PagePadding 属性
MSDN 关于 PageWidth 属性
The FlowDocument object supports the functionality you are looking for in the PageWidth, PagePadding properties. The ColumnWidth property does not affect the page width, rather it suggests, or can enforce, how columns are laid out within the confines of the page width.
Some more details from a blog on the subject:
full blog post here
MSDN on PagePadding Property
MSDN on PageWidth Property
有关 FlowDocument.ColumnWidth 属性的一些社区内容,http://msdn.microsoft.com/en-us/library/system.windows.documents.flowdocument.columnwidth(v=vs.85).aspx 表示“默认情况下,流文档的列宽是字体大小的 20 倍”。我将 FontSize="40" 添加到 FlowDocument 并获得了可以使用的宽度。我只需要在其他地方也提供 FontSizes,因为我真的不想要 40。
Some Community Content on FlowDocument.ColumnWidth property, http://msdn.microsoft.com/en-us/library/system.windows.documents.flowdocument.columnwidth(v=vs.85).aspx, says "By default, a Flow Document’s column width is 20 times the font size". I added FontSize="40" to the FlowDocument and got a width I could work with. I just had to provide FontSizes everywhere else, too, because I really didn't want 40.