0
我試圖將FlowDocument另存爲XPS。我使用.Net 4.0。 的FlowDocument的包含以下元素:當我顯示我的WPF應用程序內的FlowDocument創建XPS時,FlowDocument與InlineUIContainer(圖像,數據網格)問題
<Paragraph>
<InlineUIContainer BaselineAlignment="Center">
<Image Source="/MyNamespace;component/Images/logo.png"/>
</InlineUIContainer>
</Paragraph>
<Paragraph>
<Run Text="{Binding Path=TextBinding, FallbackValue='Oups, binding did not work'}"></Run>
</Paragraph>
<InlineUIContainer>
<DataGrid ItemsSource="{Binding Path=Items}" AutoGenerateColumns="False"
CanUserAddRows="False" RowHeaderWidth="0">
<DataGrid.Columns>
<DataGridTextColumn Header="Item Number"
Binding="{Binding Path=Id}" Width="100" />
<DataGridTextColumn Header="Description"
Binding="{Binding Path=ItemDescription}" Width="200" />
</DataGrid.Columns>
</DataGrid>
</InlineUIContainer>
一切工作就好了。
現在,我需要將其轉換爲服務器上的XPS文件(我希望批量打印!)。
所以我用下面的代碼:
flowDocument.DataContext = myViewModel;
Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.SystemIdle,
new DispatcherOperationCallback(arg => null), null);
string xpsFilePath = String.Concat(@"c:\temp\", Guid.NewGuid(), ".xps");
using (FileStream outputFile = new FileStream(xpsFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
using (Package package = Package.Open(outputFile, FileMode.Create, FileAccess.ReadWrite))
using (XpsDocument xpsDoc = new XpsDocument(package, CompressionOption.Maximum))
{
XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);
DocumentPaginator paginator = ((IDocumentPaginatorSource)flowDocument).DocumentPaginator;
rsm.SaveAsXaml(paginator);
rsm.Commit();
}
你猜怎麼着? 1)圖像丟失 2)DataGrid的空,雖然線被描繪 =>只有運行正常顯示
我試過各種在網絡上找到的組合,但它只是從來沒有出來propertly 。 而任何非自動化的解決方案是如此不可能!
我不能等待別人來拯救我! 在此先感謝