2

即使我强制它更新其布局,我似乎也永远无法HasOverflowContent对 a 开火。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.LoadedMainPage构造函数上订阅,并且在这种情况下这个设置确实显示正确,但是,它对我的​​应用程序来说不够好,所以我如何在加载的事件之外检查这个?

4

1 回答 1

0

所以,看起来它必须添加到可视化树中。否则它不会渲染它。添加后,我可以调用 RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap(); 并等待 renderTargetBitmap.RenderAsync(contentToBePrinted); 我可以通过在不透明度为 0 的网格中添加 RichTextBlock 以及在运行时将所有 RichTextBlockOverflow 也添加到该网格中来实现从 Metro 应用程序打印的工作,这样我就可以让它们渲染并检查 HasOverflowContent 标志。这是我让它按照我想要的方式工作的唯一方法。

于 2014-02-18T02:09:12.080 回答