2009-08-31 37 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