【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

関連記事

UWPでユニットテスト

ユニバーサルWindowsのアプリケーションプロジェクトおよびクラスライブラリプロジェクトのユニット

記事を読む

no image

Xamarin.UITest, Xamarin Test Cloud にて iPhone 6 Plus, 6S Plus, 7 Plus などで app.Tap が効かない

動作しないというか、app.Tapがどうしても反応しない。 app.ScreenShotなどは動作す

記事を読む

no image

Microsoft.Expression.Encoderで動画のフレーム画像を取得

動画ファイルから指定したフレーム画像を取得する。 Microsoft.Expression.Enco

記事を読む

no image

BOT向け自然言語処理サービスまとめ

自然言語処理 自然言語処理(しぜんげんごしょり、英語: natural language p

記事を読む

no image

【VB.NET】async および await キーワードの使用

.NET Framework4.5(C#5.0, VB11.0)の新機能 Async/Awai

記事を読む

【iPhoneアプリ】リリース手順〜プロビジョニングプロファイルを作成する〜

リリース前にDistribution Provisioning Profileを作成する 手順

記事を読む

no image

【Cocos2d-x】Cocos2d-xセットアップ

メモ。Xcodeはインストール済、OSはMac10.9.5 必要なものをダウンロード&解凍

記事を読む

【ストアアプリ】画面遷移の基本①

こんにちは。 Windowsストアアプリをぼちぼち触り始めています。 WindowsRuntim

記事を読む

Xamarin Studio から Visual Studio for Mac へ変更してから、”The “XamlCTask” task failed unexpectedly.” が発生。

Visual Studio for Mac がGAしたので、インストールしてみた。 それまで開発して

記事を読む

【ストアアプリ】トースト通知の基本

Windowsストアアプリ開発での基本。 トースト通知について投稿します。 Pack

記事を読む

Message

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

PAGE TOP ↑