WPF 超链接中的文本换行
在我的 WPF 应用程序中,我有这样的情况:
<StackPanel>
<TextBlock>
<Hyperlink>
<TextBlock TextWrapping="Wrap" Name="HyperlinkText" />
</Hyperlink>
</TextBlock>
</StackPanel>
但是,如果我将 HyperlinkText.Text
设置为换行的长文本,则整个文本仅在底部加下划线一次(参见图片)。 有没有办法让每行单独加下划线而不需要手动换行?
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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是 WPF 中一个非常非常烦人的问题。 我什至称其为错误。
正如 @levanovd 在他的回答中提到的,您可以通过使用
Run
作为内部元素来正确换行超链接:这非常有效,直到您想在其中应用文本格式 超链接。 例如,如果您尝试这样做:
您会收到编译错误:
因此,正如 @Scott Whitlock 所指出的,您必须使用
TextBlock
作为内部元素,并使用Hyperlink
的TextDecoration
属性和TextBlock
相反:叹息。 我真的很讨厌 WPF 的
Hyperlink
元素。 它只是没有像你期望的那样工作。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:This works great, until you want to apply text formatting within the hyperlink. If you tried to do this, for example:
You'd get a compile error:
So, as @Scott Whitlock noted, you have to use a
TextBlock
as the inner element and mess around with theTextDecoration
attributes of theHyperlink
andTextBlock
instead:Sigh. I really hate WPF's
Hyperlink
element. It just doesn't work anything like you'd expect.实现此目的的一种更简单的方法是使用
Run
而不是 TextBlock。希望能帮助到你。
An easier way to achieve that is to use
Run
instead of TextBlock.Hope it helps.
尝试更改超链接的样式以删除下划线。 然后向内部 TextBlock 样式本身添加下划线。
Try changing the style of the Hyperlink to remove the underline. Then add an underline to the inner TextBlock style itself.