【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

関連記事

WordPressでスパムコメント対策

WordPressのスパムコメント対策を行ったのでメモ。 標準でAkismetがインストール済み(

記事を読む

【ストアアプリ】バッジ通知(BadgeUpdateManager)について

こんにちは。 前回のタイル通知にバッジ通知を追加しました。 以下を参考に。 https

記事を読む

【iPhoneアプリ】開発者登録手順(iOS Developer Program) その1

iPhoneアプリの作成からリリースまでの一通りの流れを体験したかったため、 簡単なiPhon

記事を読む

【WPF/XAML】セパレータを縦にする

<Window x:Class="VerticalSeparator&q

記事を読む

no image

Xamarin.FormsのAndroidでスプラッシュ画面

Xamarin.Formsでアプリを作成した時、iOSは起動時にLauncher.storyboar

記事を読む

【VisualStudio2015】UWPアプリケーションのXAMLデザイナにて「パッケージを登録できませんでした。」

VisualStudio2015 / UWPアプリケーション / XAMLデザイナ / エラー のメ

記事を読む

UWPをHockeyApp対応させる

走り書きメモ。 UWPをHockeyApp対応させるためにはNuGetパッケージを使ってモジュール

記事を読む

【iPhoneアプリ】リリース手順〜iTunesConnect登録〜

AppStoreに有料アプリ、iAdアプリを公開するためには、 iTunes Connectで

記事を読む

Xamarin.FormsのTabbedPageでバッジを表示する

iOSのタブバーはNative側でバッジ機能があるのだが、Androidにはそもそもバッジが無いらし

記事を読む

no image

Windows8.1 64bitにVB6.0開発環境を構築メモ

MSDNフォーラムの、この投稿はとても素晴らしいです。 windows 8 64bit

記事を読む

Message

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

PAGE TOP ↑