Fixeddocument中Itemscontrol内的分页符



在我的应用程序中,我需要生成不同的报告。它们中的大多数都可以放在一页纸上。我用FixedDocuments创建了这些报告。现在我尝试在FixedDocument中创建某种类型的信件。它包含一个标题、一个赞美的结束语和一个主题。这些零件工作起来没有任何问题。它们都被分为UserControls。

这封信的主要内容让我有些头疼。这应该是绑定到自定义列表(categoryList)的嵌套ItemsControl。自定义列表的每个项目都由一个字符串(类别)和另一个列表(valueList)组成。另一个列表的元素由两个字符串(标题、值)组成。ItemsControl如下所示:

<ItemsControl ItemsSource="{Binding categoryList}"
DockPanel.Dock="Top"
Margin="20,10,0,0">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical" Margin="0" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding category}"/>
<ItemsControl ItemsSource="{Binding valueList}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical" Margin="0" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding caption}"
Grid.Column="0" />
<TextBlock Text="{Binding value}"
Grid.Column="1" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

如果categoryList和valueList都只包含几个元素,那么一切都很好。但是,对于一定数量的元素,ItemsControl会被剪裁。

这就是我通过以下代码创建FixedDocument的方式:

FixedDocument doc = new FixedDocument();
FixedPage page = new FixedPage();
PageContent page1= new PageContent();
//All UserControls are placed inside a DockPanel
DockPanel panel = new DockPanel();
//UserControl with header
Header header = new Header();
DockPanel.SetDock(header, Dock.Top);
panel.Children.Add(header);
//UserControl with complimentary close
Complimentary complimentary = new Complimentary();
DockPanel.SetDock(complimentary, Dock.Top);
panel.Children.Add(complimentary);
//UserControl with subject
Subject subject = new Subject();
DockPanel.SetDock(subject , Dock.Top);
panel.Children.Add(subject);
//UserControl with ItemsControl for categoryList
Categories categories = new Categories();
DockPanel.SetDock(categories,Dock.Top);
panel.Children.Add(categories);
//Add the DockPanel to the page
page.Children.Add(panel);
//Set the PageContent
page1.Child = page;
doc.Pages.Add(page1);
//Set the DataContext for the Binding
doc.DataContext = this.listWithValues;
//Display the result in a DocumentReader
this.reader.Document = doc;

有没有办法在ItemsControl中放置分页符?在将导致溢出的第一个类别之前。或者更好的是在将导致溢出的类别内。

谢谢你的建议和建议!如果需要任何其他信息,请随时询问。

我自己一直在研究FixedDocument,将其作为一种能够从统计信息显示中进行复制的解决方案。

FixedDocument类根据定义是所见即所得,这意味着每个页面上的内容都是明确定义的;您可以精确地定义要在页面上显示的内容,然后将该PageContent添加到FixedDocument中根据设计,内容不会从一页流到另一页。

正如你所说,由于你的类别"溢出",你已经在寻找解决方案的路上了。。。您希望使用FlowDocument而不是FixedDocument。FlowDocument将根据内容本身以及字体大小和其他上下文来流动您的内容。

相关内容

  • 没有找到相关文章

最新更新