Questo è un problema davvero molto fastidioso in WPF. Andrei fino a definirlo un bug.
Come @levanovd menzionato nella sua risposta, è possibile ottenere un collegamento ipertestuale per avvolgere correttamente utilizzando un Run
come elemento interno:
<StackPanel>
<TextBlock TextWrapping="Wrap">
<Hyperlink><Run>This is a really long hyperlink. Yeah, a really really long hyperlink, whaddaya think?</Run></Hyperlink>
</TextBlock>
</StackPanel>
Questa grande opera, fino a quando si desidera applicare la formattazione del testo all'interno di il collegamento ipertestuale. Se si è tentato di fare questo, per esempio:
<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>
Si otterrebbe un errore di compilazione:
The object 'Run' already has a child and cannot add ''. 'Run' can accept only one child.
Così, come ha notato @ Scott Whitlock, è necessario utilizzare un TextBlock
come elemento interno e pasticciare con i TextDecoration
attributi del Hyperlink
e TextBlock
invece:
<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. Odio davvero l'elemento Hyperlink
di WPF. Non funziona proprio come ti aspetteresti.
Grazie, anche questo funziona ed è molto più semplice. (Ho dovuto spostare TextWrapping = "Wrap" dal TextBlock interno a quello esterno.) – svick
Link non funziona più ... – fmuecke