2009-08-31 22 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; 
    } 

このコードは私の2つの方法を組み合わせが含まれていることに注意が、してくださいを現在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

答えて

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は」だけです816ピクセル幅ですが、これは私の解像度の半分に過ぎません。これを変更する方法。私はこれが81​​4(811,363636) – H4mm3rHead

+0

だけであるDocumentPageViewに反映されているものと確信しています。更新:XamlPadで表示しようとしましたが、正しく表示されませんでした。たぶんそれはあまりにも多くを期待している私です。内容は、左上で整列され、中央ではなく、塗りつぶされます。 – H4mm3rHead

+0

:)今、私の「完璧な権利」はあなたのものではないことを認識しています。どのような正確なレイアウトを取得しようとしていますか? – Anvaka

-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

これは*答えではなくあなたの質問の編集としてもっと役立つでしょう - それはそうではありません。 –

-2

(このコメントは、別のアカウントから書かれている)

@Anvaka:どのような私は完全に右の意味は、文書がフォントサイズを変更すべきである「コンテナ内のドック」、それが記入すべきであるということです容器の高さと幅。今、私はそれについて考えています、それはflowdocumentのための適切な振る舞いのように見えないかもしれません。

私はフロードキュメントをコンテナに配置するとき、それは親コンテナの中央に配置されます(これまでのところ良いです)。親コンテナがその親コン​​テナを塗りつぶしていないので、フォントサイズをズームしたり変更したりすると、documentPageViewコンテナの幅と高さは大きくなりますが、中央に置かれます。

+0

これはコメントではありません –

2

私はFlowDocumentScrollViewと同様の問題があったが、このソリューションは、FlowDocumentPageViewで動作するようです:

それはPagePaddingプロパティがauto,auto,auto,autoに設定されているだからFlowDocumentが中央に配置されます。 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ポイントがあり、マージンとのPageSizeがポイントに設定されている、覚えている)を定義:

幅= 96 * 8.5

高さ= 96 * 11

関連する問題