svi*_*ick 13 wpf xaml hyperlink word-wrap
在我的WPF应用程序中,我有这个:
<StackPanel>
<TextBlock>
<Hyperlink>
<TextBlock TextWrapping="Wrap" Name="HyperlinkText" />
</Hyperlink>
</TextBlock>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
但是,如果我设置HyperlinkText.Text为包装的长文本,则整个文本仅在底部加下划线一次(参见图像).有没有办法让每一行都单独加下划线而不需要人工包装?

dth*_*her 14
这是WPF中一个非常非常烦人的问题.我甚至称它为虫子.
正如@levanovd在他的回答中提到的,你可以使用a Run作为内部元素来获得一个正确包装的超链接:
<StackPanel>
<TextBlock TextWrapping="Wrap">
<Hyperlink><Run>This is a really long hyperlink. Yeah, a really really long hyperlink, whaddaya think?</Run></Hyperlink>
</TextBlock>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
这很有效,直到您想要在超链接中应用文本格式.如果您尝试这样做,例如:
<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>
Run Code Online (Sandbox Code Playgroud)
你会得到一个编译错误:
对象'Run'已经有一个孩子,无法添加''.'Run'只能接受一个孩子.
所以,作为@Scott惠特洛克注意,你必须使用一个TextBlock为内部元件和周围乱用TextDecoration的属性Hyperlink和TextBlock替代:
<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>
Run Code Online (Sandbox Code Playgroud)
叹.我真的很讨厌WPF的Hyperlink元素.它只是没有像你期望的那样工作.
| 归档时间: |
|
| 查看次数: |
5852 次 |
| 最近记录: |