FlowDocument с InlineUIContainer (изображение, сетка данных) проблемы при создании XPS
Я пытаюсь сохранить FlowDocument как XPS. Я использую.Net 4.0. FlowDocument содержит следующие элементы:
<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>
Все отлично работает, когда я отображаю этот FlowDocument в моем приложении WPF.
Теперь мне нужно преобразовать это в файл 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 пуст, хотя линии нарисованы => Правильно отображается только прогон.
Я перепробовал всевозможные комбинации, найденные в сети, но это никогда не получалось правильно. И о любом неавтоматизированном решении просто так не может быть и речи!!!
Я не могу ждать, пока кто-нибудь спасет меня!!! заранее спасибо
1 ответ
Смотрите в конце http://social.msdn.microsoft.com/Forums/en-US/51b358e5-8d59-43a5-b5e6-d9bd90f59692/problem-with-saving-inlineuicontainer-items-in-a-flowdocument
это ответ для Silverlight, но я думаю, он должен работать и с WPF