Este es un problema muy, muy molesto en WPF. Iba tan lejos como para llamarlo un error.
Como @levanovd mencionado en su respuesta, se puede obtener un hipervínculo para envolver adecuadamente mediante el uso de un Run
como el elemento interior:
<StackPanel>
<TextBlock TextWrapping="Wrap">
<Hyperlink><Run>This is a really long hyperlink. Yeah, a really really long hyperlink, whaddaya think?</Run></Hyperlink>
</TextBlock>
</StackPanel>
Esto funciona muy bien, hasta que desee aplicar formato de texto dentro de el hipervínculo. Si se trató de hacer esto, por ejemplo:
<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>
Te obtener un error de compilación:
The object 'Run' already has a child and cannot add ''. 'Run' can accept only one child.
Por lo tanto, como se ha señalado @ Scott Whitlock, usted tiene que utilizar un TextBlock
como el elemento interior y perder el tiempo con los atributos de la TextDecoration
Hyperlink
y TextBlock
lugar:
<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>
suspiro. Realmente odio el elemento Hyperlink
de WPF. Simplemente no funciona como esperabas.
Gracias, eso también funciona y es mucho más simple. (Tuve que mover el TextWrapping = "Wrap" del TextBlock interno al externo.) – svick
El enlace ya no funciona ... – fmuecke