/// <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; } }
/// <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); } } }