【XAML/VB.NET】XAMLファイルを帳票フォーマットとして使用する

公開日: : 最終更新日:2015/10/20 Blog, Microsoft , ,

掲題について。結論としてはFixedPageをルートとするXAMLファイルを
XamlReaderでロードしてFixedDocumentに表示させた。
フォーマット内のバインド部分も動く。

<FixedPage xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
           xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
           xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
           xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
           mc:Ignorable="d" Margin="10"
           d:DesignHeight="1056" d:DesignWidth="816"
           DataContext="{Binding ViewerData}">
    <Grid Height="1036" Width="796" Margin="10">
        <Grid.RowDefinitions>
            <!-- …省略… -->
        </Grid.RowDefinitions>
        <!-- 固定部分 -->
        <Grid Grid.Row="0">
            <Border BorderBrush="Black"
                    BorderThickness="1"
                    Margin="5"
                    Padding="10"
                    CornerRadius="5">
                <TextBlock TextAlignment="Center" Text="帳票タイトル" />
            </Border>
        </Grid>
        <!-- 可変部分 -->
        <Grid Grid.Row="1">
            <Grid.ColumnDefinitions>
                <!-- …省略… -->
            </Grid.ColumnDefinitions>
            <TextBlock Grid.Column="0" Text="バインドパラメータ" />
            <TextBlock Grid.Column="1" Text="{Binding Param1}" />
            <TextBlock Grid.Column="2" Text="{Binding Param2}" />
            <TextBlock Grid.Column="3" Text="{Binding Param3}" />
        </Grid>
    </Grid>
</FixedPage>

読み込みロジック

Private Shared Function PrintTemplate(path As String) As Object

    Dim reader As XmlReader = XmlReader.Create(path)
    Dim fixedPage As FixedPage = DirectCast(XamlReader.Load(reader), FixedPage)

    Dim content As New PageContent
    content.Child = fixedPage
    Dim fixedDocument As New FixedDocument()

    'A4指定
    fixedDocument.DocumentPaginator.PageSize = New Size(96 * 8.5, 96 * 11)
    fixedDocument.Pages.Add(content)

    Return fixedDocument
End Function

メイン画面

<Window>
    <!-- …省略… -->
    <DocumentViewer Grid.Row="1" Zoom="80">
        <!-- ここにPrintTemplateで取得したオブジェクトを設定 -->
    </DocumentViewer>
<Window>

【オマケ】
DocumentViewerのスタイル変更をしたい場合。以下が参考になった。
私の場合はヘッダのボタンを必要最小限にし、フッタの検索バーを消したかった。

http://msdn.microsoft.com/ja-jp/library/vstudio/aa970452(v=vs.100).aspx

関連記事

Xamarin.Forms出力バイナリのメモ

iOS -> .ipa, Android -> .apk ipaファイル作成方法 ソリュー

記事を読む

no image

Microsoft.OData.Clientでフォーム認証を行う

構成 サーバー ** Azure API Apps ** ASP.NET Web API クライ

記事を読む

no image

Microsoft Bot Frameworkでテキストメッセージではなく、添付ファイルを使用する

activity.Attachmentsに添付ファイル入っている。 ContentTypeで画像か判

記事を読む

Visual Studio 2015 Express の Language Pack

探してみたけど見当たらなかったのでメモ残し。 Visual Studio 2015 には言語パック

記事を読む

no image

【WPF/XAML】Visibility変更時のアニメーション切替

ストーリーボードを使わずに、Visibility変更でアニメーションを発生させたかった。 やってる

記事を読む

【WPF/XAML】チェックボックスのデザイン変更

[xml] <Window x:Class="Sample"

記事を読む

拡張メソッドは、非ジェネリック静的クラスで定義される必要があります

単純にメッセージどおり。 public static class BaseExtensi

記事を読む

【ストアアプリ】タイル通知(TileUpdateManager)について

こんにちは。 ストアアプリでタイル通知を行う方法を調べました。 前回のトースト通知と

記事を読む

no image

属性を使って、列挙型の列挙子を並び替え、フィルタリングする

メモだよ

記事を読む

no image

【.NET】正規表現の復習

正規表現エンジン System.Text.RegularExpressions.Regexオブジェ

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

PAGE TOP ↑