在我的应用程序中,我需要生成不同的报告。它们中的大多数都放在一个页面上。我使用 FixedDocuments 创建了这些报告。现在我尝试在 FixedDocument 中创建某种字母。它包含标题、补充结尾和主题等内容。这些部件工作没有任何问题。它们都被分成用户控件。
信的主要内容让我有些头疼。这应该是绑定到自定义列表 (categoryList) 的嵌套 ItemsControl。自定义列表的每一项都由一个字符串(类别)和另一个列表(值列表)组成。另一个列表的元素由两个字符串(标题、值)组成。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 中放置分页符?在将导致溢出的第一个类别之前。甚至在会导致溢出的类别中更好。
感谢您的任何建议和建议!如果需要任何其他信息,请随时询问。