即使我强制更新它的布局,我似乎也无法让HasOverflowContent
在RichTextBlock
上触发。以下是我已经试过:如何检测RichTextBlock在Windows应用商店应用中是否存在溢出内容?
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此处的注释[此处(http://msdn.microsoft.com/en-US/library/windows/apps/windows.ui.xaml.uielement.updatelayout)似乎表示可以使用'UpdateLayout'正是为了这个目的。 – Lukazoid
@Lukazoid这正是我想要做的上面,但它似乎只会在某些情况下工作。我只是不明白的情况! – Alexandru
您是否尝试强制CoreDispatcher在检查标志之前处理挂起的消息,即block.CoreDispatcher.RunAsync(CoreDispatcherPriority.Normal,()=> {})。 – Lukazoid