首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用不在DocumentViewer中显示的自定义分页器和XpsDocumentWriter的打印预览

使用不在DocumentViewer中显示的自定义分页器和XpsDocumentWriter的打印预览
EN

Stack Overflow用户
提问于 2013-10-27 09:31:59
回答 1查看 931关注 0票数 1

我已经创建了一个自定义文档分页器,它接受datatable并根据需要进行打印。我想做一个打印预览。我已经阅读了所有关于如何在内存中创建xps文件并显示它的帖子。我就是不能让它工作。这是我的代码。我使用的是MVVM模式。请注意代码行_data.DocView=fds;它将数据传递给我的视图模型。

代码语言:javascript
复制
PrintDialog dialog = new PrintDialog();
            dialog.ShowDialog();
            StoreDataSetPaginator paginator = new StoreDataSetPaginator(dt, new Typeface("Calibri"), 8, 96 * 0.75,
                new Size(dialog.PrintableAreaWidth, dialog.PrintableAreaHeight));
                    //this is commented out to attempt the print preview
                    // dialog.PrintDocument(paginator, "Print out");


            MemoryStream ms = new MemoryStream();
            Package package = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite);
            Uri DocumentUri = new Uri("pack://InMemoryDocument.xps");
            PackageStore.AddPackage(DocumentUri, package);
            XpsDocument xpsDocument = new XpsDocument(package, CompressionOption.NotCompressed,
                DocumentUri.AbsoluteUri);
            XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(xpsDocument);

            writer.Write(paginator);
            IDocumentPaginatorSource fds = xpsDocument.GetFixedDocumentSequence();
            _data.DocView = fds;

            PrintPreviewConduit prntv = new PrintPreviewConduit();
            prntv.Show();

下面是我的视图模型:

代码语言:javascript
复制
private IDocumentPaginatorSource _docView;
    public IDocumentPaginatorSource DocView
    {
        get { return _docView; }
        set
        {
            _docView = value;
            OnPropertyChanged("DocView");
        }
    }

最后是我的XAML:

代码语言:javascript
复制
<Grid>
   <DocumentViewer Name="docview" Document="{Binding DocView}"/>
</Grid>

我在我的ViewModel中输入了一个转折点"public IDocumentPaginatorSource DocView“,当我把鼠标移到它上面时,我不确定我应该得到什么。我现在花了一段时间,任何帮助都将不胜感激。Sys

EN

回答 1

Stack Overflow用户

发布于 2013-10-27 10:20:12

嗯,我觉得自己很傻。我没有将新窗口的datacontext设置为我的视图模型。现在一切正常了!

代码语言:javascript
复制
PrintPreviewConduit prntv = new PrintPreviewConduit();
prntv.DataContext = _data;
_data.DocView = fds;
prntv.Show();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19613732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档