即使我强迫它更新其布局,我也无法在HasOverflowContent
上触发RichTextBlock
。这是我尝试过的:
public MainPage()
{
this.InitializeComponent();
RichTextBlock block = new RichTextBlock();
RichTextBlockOverflow overflow = new RichTextBlockOverflow();
block.OverflowContentTarget = overflow;
block.Width = 100;
block.Height = 100;
Paragraph paragraph = new Paragraph();
for (int i = 0; i < 1000; i++)
{
Run run = new Run();
run.Text = "FILLER";
paragraph.Inlines.Add(run);
}
block.Blocks.Add(paragraph);
block.UpdateLayout();
if (block.HasOverflowContent)
{
// This line will never be hit.
}
MainGrid.Children.Add(block);
}
为什么没有HasOverflowContent
发信号通知它实际上有溢出内容?
编辑:好的,我能够在this.Loaded
构造函数上订阅MainPage
并且此设置确实在这种情况下正确显示,但是,它对我的应用程序来说还不够好所以如何能够我在加载的事件之外检查了这个吗?
答案 0 :(得分:0)
因此,看起来它必须添加到Visual Tree中。否则它不会呈现它。添加后,我可以调用RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();并等待renderTargetBitmap.RenderAsync(contentToBePrinted);我可以通过在具有0不透明度的网格中添加RichTextBlock,并且在运行时也将所有RichTextBlockOverflow添加到该网格,以便我可以使用它来渲染并检查HasOverflowContent标志。它是我能按照我想要的方式工作的唯一方法。