List<UserControl1> RowUC = new List<UserControl1>(); List<List<UserControl1>> FullUC = new List<List<UserControl1>>(); for (int i = 0; i < gridLad.RowDefinitions.Count; i++) { for (int j = 0; j < ColDefineCount; j++) { RowUC.Add(Lad_GetObjct(i, j)); } FullUC.Add(RowUC); }这里我把梯形图先存为行,再将行存到一个集合中。我应该如何将每一行梯形图,逐个存到DocumentViewer中
时间: 2024-02-14 19:29:42 浏览: 153
你可以使用 `DocumentPaginator` 类来将每一行的梯形图逐个存储到 `DocumentViewer` 中。首先,你需要创建一个自定义的 `DocumentPaginator` 类,该类可以处理每一行梯形图的呈现和分页。然后,你可以将每个 `FullUC` 中的 `RowUC` 添加到自定义 `DocumentPaginator` 中,并将该 `DocumentPaginator` 分配给 `DocumentViewer` 的 `Document` 属性。
以下是一个示例代码,展示了如何实现这个过程:
```csharp
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Media;
public class CustomDocumentPaginator : DocumentPaginator
{
private readonly List<List<UserControl1>> _fullUC;
public CustomDocumentPaginator(List<List<UserControl1>> fullUC)
{
_fullUC = fullUC;
}
public override DocumentPage GetPage(int pageNumber)
{
var container = new ContainerVisual();
var pageContent = new PageContent();
var fixedPage = new FixedPage();
fixedPage.Width = PageSize.Width;
fixedPage.Height = PageSize.Height;
var rowUC = _fullUC[pageNumber];
for (int i = 0; i < rowUC.Count; i++)
{
var uc = rowUC[i];
var visual = new DrawingVisual();
var drawingContext = visual.RenderOpen();
// 绘制梯形图
// ...
drawingContext.Close();
fixedPage.Children.Add(visual);
}
container.Children.Add(fixedPage);
((IAddChild)pageContent).AddChild(container);
return new DocumentPage(container);
}
public override bool IsPageCountValid => true;
public override int PageCount => _fullUC.Count;
public override Size PageSize { get; set; }
public override IDocumentPaginatorSource Source => null;
}
```
然后,你可以使用以下代码将 `CustomDocumentPaginator` 分配给 `DocumentViewer` 的 `Document` 属性:
```csharp
var paginator = new CustomDocumentPaginator(FullUC);
paginator.PageSize = new Size(/* 设置页面尺寸 */);
var documentViewer = new DocumentViewer();
documentViewer.Document = new DocumentPaginatorSource(paginator);
```
记得替换注释中的代码以适应你的具体情况。这样,每一行的梯形图将会逐个添加到 `DocumentViewer` 中进行显示。
阅读全文