【发布时间】:2013-01-16 10:19:36
【问题描述】:
我有FixedDocument 页面,我想在其上放置TextBlock,但可能是Textblock 不适合页面的高度。
所以我想从生成的TextBlock 和TextWrapping 中提取线条,然后创建新的TextBlock,它适合高度并将其放在页面上。 TextBlock 有LineCount 私有属性,这意味着它在包装后有TextLines,我可以通过某种方式得到它。
创建 TextBlock 并运行:
public TextItem(PageType pageType, Run[] runs, Typeface typeFace, double fontSize)
: base(pageType)
{
this.TextBlock = new TextBlock();
this.TextBlock.Inlines.AddRange(runs);
if (typeFace != null)
this.TextBlock.FontFamily = typeFace.FontFamily;
if (fontSize > 0)
this.TextBlock.FontSize = fontSize;
this.TextBlock.TextWrapping = TextWrapping.Wrap; //wrapping
}
用文字创建TextBlock:
public TextItem(PageType pageType, String text, Typeface typeFace, double fontSize)
: base(pageType)
{
if (typeFace == null || fontSize == 0)
throw new Exception("Wrong textitem parameters");
this.TextBlock = new TextBlock();
this.TextBlock.Text = text;
this.TextBlock.FontFamily = typeFace.FontFamily;
this.TextBlock.FontSize = fontSize;
this.TextBlock.TextWrapping = TextWrapping.Wrap;
this.TextBlock.TextAlignment = TextAlignment.Justify;
this.TypeFace = typeFace;
}
将宽度设置为TextBlock,得到DesiredSize:
this.TextBlock.Width = document.CurrentPage.Content.ActualWidth;
this.TextBlock.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
【问题讨论】:
-
pastebin.com/b6cZD5pp 我知道一种从文本块中获取线条的方法,但这仅在已绘制控件时才有效。
-
你看过 wpf
FlowDocument吗?指向msdn的链接。 -
是的,但 FlowDocument 不适合我。我
m try layout elements manual on single FixedPage, that have A4 size. Thats 为什么如果它不适合我需要拆分文本块。
标签: wpf textblock fixeddocument line-count