1

我有一个 Silverlight 应用程序,它使用 Web 服务来创建 XPS 文档。文档模板在 WCF 类库中创建为 XAML 控件。

public void GenerateXPS()
{
    Type typeofControl = Type.GetType(DOCUMENT_GENERATOR_NAMESPACE + "." + ControlTypeName, true);
    FrameworkElement control = (FrameworkElement)(Activator.CreateInstance(typeofControl));

    control.DataContext = DataContext;

    FixedDocument fixedDoc = new FixedDocument();
    PageContent pageContent = new PageContent();
    FixedPage fixedPage = new FixedPage();

    //Create first page of document
    fixedPage.Children.Add(control);
    ((IAddChild)pageContent).AddChild(fixedPage);
    fixedDoc.Pages.Add(pageContent);
    XpsDocument xpsd = new XpsDocument(OutputFilePath + "\\" + OutputFileName, FileAccess.ReadWrite);
    System.Windows.Xps.XpsDocumentWriter xw = XpsDocument.CreateXpsDocumentWriter(xpsd);
    xw.Write(fixedDoc);
    xpsd.Close();

    SaveToDocumentRepository();
}

为了将实际数据绑定到我的文档模板,我设置了控件的 DataContext 属性。问题是当我查看我的 XPS 时,图像(我将图像控件的源绑定到代表图像 URL 的字符串属性)没有显示,就好像它们没有加载一样。我怎么解决这个问题?谢谢!

4

1 回答 1

1

绑定基础结构可能需要推动,因为您在 WPF 的预期用途之外进行操作。

设置数据上下文后尝试添加以下代码:

control.DataContext = DataContext;

// we need to give the binding infrastructure a push as we
// are operating outside of the intended use of WPF
var dispatcher = Dispatcher.CurrentDispatcher;
dispatcher.Invoke(
   DispatcherPriority.SystemIdle,
   new DispatcherOperationCallback(delegate { return null; }),
   null);

我在这篇博文中介绍了这个和其他与 XPS 相关的内容。

于 2010-02-16T12:41:06.693 回答