请帮助...... Iam附上初始代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace TextOnFlowDoc
{
/// <summary>
/// Interaction logic for Page1.xaml
/// </summary>
public partial class Page1 : Page
{
public Page1()
{
InitializeComponent();
Paragraph paragraph = new Paragraph();
paragraph.Inlines.Add(System.IO.File.ReadAllText(@"C:\Lis.txt"));
paragraph.FontFamily = new FontFamily("CourierNew");
FlowDocument document = new FlowDocument(paragraph);
// FlowDocumentReader rdr = new FlowDocumentReader();
FlowDocScl.Document = document;
}
}
}
现在这个“FlowDocScl”现在是一个流文档,需要在AT RUNTIME页面中分解。 在此先感谢。
答案 0 :(得分:2)
我不确定您为什么要自定义分页符,如果您在FlowDocumentPageViewer
中显示它,例如,如果内容对于查看者而言太大,则会自动中断。
如果您必须按需插入中断,则需要在Blocks
中拆分文档,这些文档具有名为BreakPageBefore
的属性,当设置为true时,显然会在该块之前插入分页符。
像这样(未经测试):
private void BreakAndAddText(string text)
{
var pages = text.Split(new string[] { "\\f" }, StringSplitOptions.None);
foreach (var page in pages)
{
document.Blocks.Add(new Paragraph(new Run(page)) { BreakPageBefore = true });
}
}
答案 1 :(得分:0)
非常感谢您的建议。我已按照以下方式使用您的代码并实现了我想要的目标。
var pages = ts.Split(new string[] { "\f" }, StringSplitOptions.None);
for (int i = 0; i < pages.Length; i++)
{
if (i != pages.Length - 1)
{
cmbPageNbr.Items.Add(i + 1);
}
}
if (cmbPageNbr.Items.Count > 0)
{
cmbPageNbr.SelectedIndex = 0;
}
LoadPageWiseData(cmbPageNbr.SelectedIndex);
}
private void LoadPageWiseData(int pageNbr)
{
var pages = ts.Split(new string[] { "\f" }, StringSplitOptions.None);
FlowDocument document = new FlowDocument();
document.Blocks.Add(new Paragraph(new Run(pages[pageNbr])) { BreakPageBefore = true });
document.FontFamily = new System.Windows.Media.FontFamily("Courier New");
document.FontSize = 12;
docViewer.Document = document;
}