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