在我的應用程序中,我需要生成不同的報告。他們大多數適合在一個頁面上。我使用FixedDocuments創建了這些報告。 現在我嘗試在FixedDocument中創建某種字母。它包含一個標題,一個免費的關閉和一個主題。這些部件沒有任何問題。它們都分成UserControls。固定文檔中的Itemscontrol內的Pagebreak
這封信的主要內容給了我一些頭痛。這應該是綁定到自定義列表(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>
如果所屬分類和值列表都包含僅有幾個元素,一切工作正常。但是對於一定數量的元素,ItemsControl會被裁剪掉。
這是我如何通過代碼創建固定文檔:
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的內部分頁符?在導致溢出的第一個類別之前。或者在導致溢出的類別中更好。
感謝您的任何建議和意見!如果需要其他信息,請隨時詢問。
karfus,謝謝你的回答! 我也想過使用FlowDocument。很早以前,因爲我發佈了這個問題,但我記得那裏有些地方爲什麼我不能使用FlowDocuments。我現在正在通過代碼即時建立FixedDocument中的單個頁面。這有點多,但是我可以定義自己的規則,什麼時候做分頁。 – user2219063