FixedDocumentとFlowDocument WPFFixedDocumentとFlowDocument WPF前回、DocumentViewerを試してみましたが、表示したXPSをWPFでも作成できる。クリレポみたいにはいかないけれど、まゴリゴリ書く気ならそこそこいける?かも? で、最初に、FlowDocument。 これは、縦横比が変わるとレイアウトが変わってくれるよーな文章というより、そのような文でよければこちらを使う。 でも、これはこの画面から印刷へは直接行かない?いけないようで、FlowDocumentにしてしまうと、Gridなどは書けなくなってしまうようです。 なので、BlockUIContainer内に、Buttonを書いています。 ちょっと、不恰好ですね。 で、印刷までの流れは、xpsに一旦おとしてそこから印刷と言った感じでしょう。 うーん使えるのかな? ![]()
<Window x:Class="FlowDocument"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="FlowDocument" Height="416" Width="542">
<FlowDocument>
<Paragraph>これがFlowDocument</Paragraph>
<Paragraph Foreground="Coral" FontStyle="Italic" FontSize="50">これがFlowDocument</Paragraph>
<BlockUIContainer>
<Button Name="btn">保存</Button>
</BlockUIContainer>
</FlowDocument>
</Window>
次に、FixedDocument。 こちらは、先のDocumentViewer内に直接書き込むことができる。 しかし、XAMLの潜在的なbugがあるらしく、XAML編集上ではエラーのままとなる。が、コンパイルも表示もできる。 エラー内容は、「プロパティー’Pages’は型PageContentの値をサポートしません」というもの。 エラーでも大丈夫!とは!どえりゃー時間が(約半日)悩んでしまった。トホホ・・・・・ 直接印刷できるし、こちらの方がよさそうですね。 位置やマージンなどもしっかりと言うより、細かく指定できるみたいだ。 でも相当面倒になるような気がしますね。 クリレポの方がよいか?? ![]() ![]()
<Window x:Class="FixDocumentWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="FixDocumentWindow" Height="300" Width="300">
<Grid >
<Grid.RowDefinitions>
<RowDefinition/>
<!--<RowDefinition/>-->
</Grid.RowDefinitions>
<DocumentViewer>
<FixedDocument>
<!--実行時に、ここに貼り付ける-->
<PageContent>
<FixedPage Grid.Row="1" Width="21cm" Height="29.7cm" >
<Canvas>
<TextBox>これがFixedDocument</TextBox>
</Canvas>
</FixedPage>
</PageContent>
</FixedDocument>
</DocumentViewer>
<!--デザイン時はここで-->
<!--<FixedPage Grid.Row="1" Width="21cm" Height="29.7cm" >
<Canvas>
<TextBox>これがFixedDocument</TextBox>
</Canvas>
</FixedPage>-->
</Grid>
</Window>
因みに、下記は、コードのみでXPSのfixedDocumentを作成するサンプル。XAMLをコードで組み立てていることがよく分かります。
|