コード例 #1
0
        /// <summary>
        /// 蔵書リストの出力
        /// </summary>
        /// <param name="o">コマンド引数</param>
        private async void PrintBookList(object o)
        {
            if (UserConfirm("確認", "蔵書リストの印刷を実行しますか?", MessageBoxButton.YesNo, MessageBoxImage.Question))
            {
                // 別スレッドで実行
                CloseViewCommand.IsEnabled = false;
                await Task.Run(() =>
                {
                    // UIスレッドで生成した書籍オブジェクトをそのまま利用するとエラーになるので、
                    // 複製したものをレポートオブジェクトに渡す。
                    var report = new Reports.BookListReport(Books.Select(v => v.Clone()));
                    report.Print();
                });

                CloseViewCommand.IsEnabled = true;
            }
        }
コード例 #2
0
        /// <summary>
        /// 蔵書リストのプレビュー表示
        /// </summary>
        /// <param name="o">コマンド引数</param>
        private void PreviewBookList(object o)
        {
            var report = new Reports.BookListReport(Books);
            var uri    = "pack://book_list.xps";
            var doc    = report.CreateXpsDocumet(uri);

            if (doc != null)
            {
                try
                {
                    var preview = new PreviewViewModel(doc);
                    App.Views.ShowModalView(preview, this);
                }
                finally
                {
                    Report.RemoveDocument(uri);
                }
            }
        }