In my WPF application I have this:
<StackPanel>
<TextBlock>
<Hyperlink>
<TextBlock TextWrapping="Wrap" Name="HyperlinkText" />
</Hyperlink>
</TextBlock>
</StackPanel>
But if I set HyperlinkText.Text
to a long text that wraps, the whole text is underlined only once at the bottom (see image). Is there a way to have every line underlined separately without manual wrapping?
This is a really, really annoying problem in WPF. I'd go so far as to call it a bug.
As @levanovd mentioned in his answer, you can get a hyperlink to wrap properly by using a Run
as the inner element:
<StackPanel>
<TextBlock TextWrapping="Wrap">
<Hyperlink><Run>This is a really long hyperlink. Yeah, a really really long hyperlink, whaddaya think?</Run></Hyperlink>
</TextBlock>
</StackPanel>
This works great, until you want to apply text formatting within the hyperlink. If you tried to do this, for example:
<StackPanel>
<TextBlock TextWrapping="Wrap">
<Hyperlink><Run>This is a really long <Run TextWeight="Bold">hyperlink</Run>. Yeah, a really really long hyperlink, whaddaya think?</Run></Hyperlink>
</TextBlock>
</StackPanel>
You'd get a compile error:
The object 'Run' already has a child and cannot add ''. 'Run' can accept only one child.
So, as @Scott Whitlock noted, you have to use a TextBlock
as the inner element and mess around with the TextDecoration
attributes of the Hyperlink
and TextBlock
instead:
<StackPanel>
<TextBlock>
<Hyperlink TextDecorations="None"><TextBlock TextWrapping="Wrap" TextDecorations="Underline">This is a really long <Run FontWeight="Bold">hyperlink</Run>. Yeah, a really really long hyperlink, whaddaya think?</TextBlock></Hyperlink>
</TextBlock>
</StackPanel>
Sigh. I really hate WPF's Hyperlink
element. It just doesn't work anything like you'd expect.
An easier way to achieve that is to use Run
instead of TextBlock.
Hope it helps.
Try changing the style of the Hyperlink to remove the underline. Then add an underline to the inner TextBlock style itself.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With