我有一个FixedDocument
页面,想在上面放置TextBlock
,但是可能由于高度原因,Textblock
无法适应页面。
所以我想从生成的具有TextWrapping
的TextBlock
中获取行,并创建新的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
}
创建带有文本的:
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));
FlowDocument
吗?这里有一个链接到msdn。 - Martin Lottering