如何检测RichTextBlock是否在Windows应用商店应用中有溢出内容?

时间:2013-12-15 20:54:44

标签: c# .net microsoft-metro windows-store-apps richtextblock

即使我强迫它更新其布局,我也无法在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并且此设置确实在这种情况下正确显示,但是,它对我的​​应用程序来说还不够好所以如何能够我在加载的事件之外检查了这个吗?

1 个答案:

答案 0 :(得分:0)

因此,看起来它必须添加到Visual Tree中。否则它不会呈现它。添加后,我可以调用RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap();并等待renderTargetBitmap.RenderAsync(contentToBePrinted);我可以通过在具有0不透明度的网格中添加RichTextBlock,并且在运行时也将所有RichTextBlockOverflow添加到该网格,以便我可以使用它来渲染并检查HasOverflowContent标志。它是我能按照我想要的方式工作的唯一方法。