To jest naprawdę, bardzo irytujący problem w WPF. Posunąłbym się do stwierdzenia, że to błąd.
Jak @levanovd wspomniano w swojej odpowiedzi, można uzyskać hiperłącze do zawijania prawidłowo stosując Run
jako wewnętrzny 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>
to działa świetnie, dopóki nie chcesz zastosować formatowanie tekstu ciągu hiperłącze. Jeśli próbował to zrobić, na przykład:
<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>
Można by dostać się błąd kompilacji:
The object 'Run' already has a child and cannot add ''. 'Run' can accept only one child.
Tak, jak wspomniano @Scott Whitlock, trzeba użyć TextBlock
jako elementu wewnętrznego i poeksperymentować z atrybutami TextDecoration
z Hyperlink
i TextBlock
zamiast:
<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>
Ech. Naprawdę nie cierpię elementu WPF Hyperlink
. Po prostu nie działa tak, jak można się spodziewać.
Dzięki, że to też działa i jest o wiele prostsze. (Musiałem przenieść TextWrapping = "Wrap" z wewnętrznego bloku TextBlock na zewnętrzny.) – svick
Link już nie działa ... – fmuecke