2009-08-31 62 views
2

我有一个FlowDocument,我想填充我的窗口的整个宽度和高度。我曾尝试使用FlowDocumentPageViewer(不幸),现在正在使用DocumentPageView。我仍然无法让它停靠/填满整个空间;它只是坐在中间,在最小尺寸就可以创建(是否有意义?)Flowdocument没有使用全宽/高

这里是我的代码:

public DocumentPageView GetPage() 
    { 
     FlowDocumentPageViewer viewer = new FlowDocumentPageViewer();   
     StreamReader reader = new StreamReader(location); 
     string data = reader.ReadToEnd(); 
     reader.Close(); 
     string xamlData = HtmlToXamlConverter.ConvertHtmlToXaml(data, true); 
     FlowDocument result = (FlowDocument)System.Windows.Markup.XamlReader.Load(new MemoryStream(System.Text.UnicodeEncoding.Default.GetBytes(xamlData))); 

     viewer.Document = result; 
     viewer.VerticalAlignment = VerticalAlignment.Center; 
     viewer.HorizontalAlignment = HorizontalAlignment.Center; 

     DocumentPageView pageView = new DocumentPageView(); 
     pageView.VerticalAlignment = VerticalAlignment.Center; 
     pageView.HorizontalAlignment = HorizontalAlignment.Center; 
     pageView.Stretch = System.Windows.Media.Stretch.Uniform; 
     pageView.PageNumber = 0; 
     pageView.StretchDirection = StretchDirection.Both; 
     pageView.DocumentPaginator = ((IDocumentPaginatorSource)result).DocumentPaginator; 
     return pageView; 
    } 

请注意,该代码包含我的两个相结合的方法,但目前仅使用DocumentPageView。这是从我的HTML源创建XAML中:

<FlowDocument xml:space="preserve" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> 
<Paragraph TextAlignment="center" FontSize="22pt" FontFamily="arial">Test Paragraph</Paragraph> 
<Paragraph TextAlignment="center" FontFamily="arial">Test second paragraph</Paragraph> 
</FlowDocument> 

如果我调整字体的内容仅在垂直方向调整(请注意,拉伸方向设定为两个)。有任何想法吗?

+0

使用预置做到这一点[这里](http://stackoverflow.com/a/11584307/61577) – cleftheris 2012-07-20 17:41:08

回答

0

你能指定,你如何使用您的GETPAGE()方法的结果?它是xbap还是桌面应用程序?

我问这个,因为会显示以下文件只是完全正确的Kaxaml

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Grid> 
    <FlowDocumentPageViewer> 
    <FlowDocument > 
<Paragraph TextAlignment="center" FontSize="22pt" FontFamily="arial">Test Paragraph</Paragraph> 
<Paragraph TextAlignment="center" FontFamily="arial">Test second paragraph</Paragraph> 
</FlowDocument> 
    </FlowDocumentPageViewer> 
    </Grid> 
</Page> 

PS:如果它是一个桌面应用程序,你总能找到谁通过Snoop tool产生问题,形成皮特布卢瓦。

+0

探听工具说,我检查我的帖子:“DocumentPageHost”只816px的宽度,这只是我分辨率的一半。如何改变这一点。我敢打赌,这是一个反映到DocumentPageView的宽度也只是816(811,363636) – H4mm3rHead 2009-08-31 20:28:13

+0

更新:我试图在XamlPad中查看它,没有显示正确。也许它是我期待太多的人。内容是左对齐,而不是中心和填充... – H4mm3rHead 2009-08-31 20:37:39

+0

:)现在我意识到,我的“完全正确”不是你的。你试图得到什么样的布局? – Anvaka 2009-08-31 20:44:45

-2

更新:它是一个桌面应用程序,getpage()结果被张贴到一个完美停靠/填充的网格中。

<Window x:Class="GreenWebPlayerWPF.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="Auto" Width="Auto" WindowStyle="None" WindowState="Maximized" WindowStartupLocation="CenterScreen" Loaded="Window_Loaded" Closing="Window_Closing"> 
    <Grid Width="Auto" Height="Auto" Name="TransitionContainer" Background="White" Margin="0"> 
     //here the result from GetPage() method is inserted 
    </Grid> 
</Window> 
+1

这将是更有用的作为一个编辑你的问题,而不是*答案* - 这不是.. – 2016-08-22 16:07:03

-2

(此评论从另一个帐户书面)

@Anvaka:我说的完全正确的是,该文件应“码头集装箱”是的字体应该调整,应该填写容器的高度和宽度。现在我正在考虑这个问题,这对于流动文档来说可能不是一个正确的行为。

当我把流文档放在容器中,它居中父容器的中间(到目前为止很好)。但父容器没有填写其父容器,所以当我缩放或更改字体大小时,我希望documentPageView容器的宽度和高度增长,但保持居中。

+0

这不是一个评论 – 2016-08-22 16:03:56

2

我也有类似的问题,FlowDocumentScrollView,但是这种解决方案也似乎与FlowDocumentPageView工作:

FlowDocument的中心,因为它是PagePadding属性设置为auto,auto,auto,auto。将PagePadding设置为0可修复此问题。

<FlowDocumentScrollViewer VerticalScrollBarVisibility="Auto"> 
    <FlowDocument PagePadding="0"> 
    </FlowDocument> 
</FlowDocumentScrollViewer> 
1

以下行导致您的元素到中心本身(这是不一样的拉伸):

viewer.VerticalAlignment = VerticalAlignment.Center; 
viewer.HorizontalAlignment = HorizontalAlignment.Center; 
pageView.VerticalAlignment = VerticalAlignment.Center; 
pageView.HorizontalAlignment = HorizontalAlignment.Center; 

您可以安全地删除它们,因为这里的默认对齐方式是拉伸。

如果你仍然想中心的观众,明确定义页面大小(还记得,有一英寸96点,并在边缘与每页都在分集):

宽度= 96 * 8.5

身高= 96 * 11