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?
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
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.
Set the FlowDocument ColumnWidth="999999"