3

since you have to support multiple screen resolutions in Windows 8 Metro Apps I want to split up my RichTextBlock to show text that would be cut off in a RichTextBlockOverflow control (or multiple controls, depending how much text I have to show). In order to determine if I have to show an additional RichTextBlockOverflow-Control I check the HasOverflowContent-Property of my RichTextBlocks. But it always returns false.

It's super easy to reproduce:

  • Create a new "Windows Store -> Blank App"
  • Replace the xaml of MainPage.xaml with the following code:

    <StackPanel Orientation="Horizontal" Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
        <RichTextBlock x:Name="test1" Width="100" Height="300" OverflowContentTarget="{Binding ElementName=test}">
            <Paragraph>
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
                lkj halks dflkjha skld fkla hsdkl hfakl dsflk hasdkl fakl hsdklf halks dflka jhsdhfklaj hsdklf jhakls dflkaj hsdlkfjh alks dflkajh s
            </Paragraph>
        </RichTextBlock>
        <RichTextBlockOverflow x:Name="test" Width="100" Height="300" />
    
    </StackPanel>
    

Then go the code behind file (MainPage.xaml.cs) and replace the constructor with that code:

public MainPage()
{
    this.InitializeComponent();
    if (test.HasOverflowContent)
    {
        // Will never be entered
    }
    if (test1.HasOverflowContent)
    {
        // Will never be entered
    }
}

Set a breakpoint in the on this.InitializeComponent() and see how the HasOverflowContent will never be true.

What am I doing wrong? Or is it a bug in .NET?

Any help would be very appreciated ;)

Andi

K Mehta
  • 10,323
  • 4
  • 46
  • 76
CrazyChief
  • 197
  • 8

1 Answers1

2

Try using a different event, by putting your code in the Page_Loaded event I was able to get HasOverflowContent to work.

Mark Hall
  • 53,938
  • 9
  • 94
  • 111