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をコードで組み立てていることがよく分かります。
|