首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强制加载FlowDocument?

强制加载FlowDocument?
EN

Stack Overflow用户
提问于 2012-06-15 01:21:11
回答 2查看 311关注 0票数 0

我正在尝试打印出用户正在查看的FlowDocument。我编写了一个例程来创建原始文档的副本,这样更改(来自PrintDialog)就不会反映到DocumentViewer中。

不幸的是,我的副本似乎丢失了与其字段绑定的所有信息。我尝试过重置DataContext,但是副本的IsLoaded属性仍然返回false,这让我相信绑定没有发生。

有什么想法吗?

下面是我用来复制文档的代码:

代码语言:javascript
复制
private static void AddDocument(FlowDocument from, FlowDocument to)
{
    TextRange tr = new TextRange(from.ContentStart, from.ContentEnd);

    using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
    {
        TextRange tr2 = null;

        System.Windows.Markup.XamlWriter.Save(tr, ms);
        tr.Save(ms, DataFormats.XamlPackage, true);
        tr2 = new TextRange(to.ContentEnd, to.ContentEnd);
        tr2.Load(ms, DataFormats.XamlPackage);
    }
}

下面是我用来打印文档的代码:

代码语言:javascript
复制
public static void PrintFlowDocument(FlowDocument fd, string title)
{
    PrintDialog pd = new PrintDialog();
    IDocumentPaginatorSource idps = null;
    FlowDocument flowDoc = new FlowDocument();

    AddDocument(fd, flowDoc);

    flowDoc.DataContext = fd.DataContext;
    flowDoc.PageHeight = pd.PrintableAreaHeight;
    flowDoc.PageWidth = pd.PrintableAreaWidth;
    flowDoc.PagePadding = new Thickness(50);
    flowDoc.ColumnGap = 0;
    flowDoc.ColumnWidth = pd.PrintableAreaWidth;


    idps = flowDoc;

    if (pd.ShowDialog() == true)
    {
        pd.PrintDocument(idps.DocumentPaginator, title);
    }
}

提前谢谢你,

桑尼

EN

回答 2

Stack Overflow用户

发布于 2012-06-15 01:48:13

注意到这一行的一些错误了吗?

代码语言:javascript
复制
tr2 = new TextRange(to.ContentEnd, to.ContentEnd);
票数 0
EN

Stack Overflow用户

发布于 2012-06-15 20:38:57

我也有类似的问题,我发现强制文档创建到后台线程给了绑定一个触发的机会。否则,它不会在UI线程上发生。

因此,如果您的复制文档方法是一个函数,它将如下所示:

代码语言:javascript
复制
            Dim flowDoc As FlowDocument = 
                DirectCast(<ViewInstance>.UIDispatcher.Invoke(Function() 
                               AddFlowDocument(fd),
                               Windows.Threading.DispatcherPriority.Background), 
                           FlowDocument)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11038213

复制
相关文章

相似问题

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