WPF超链接中的文本换行
在我的WPF应用程序中,我有以下内容:WPF超链接中的文本换行,wpf,xaml,hyperlink,word-wrap,Wpf,Xaml,Hyperlink,Word Wrap,在我的WPF应用程序中,我有以下内容: <StackPanel> <TextBlock> <Hyperlink> <TextBlock TextWrapping="Wrap" Name="HyperlinkText" /> </Hyperlink> </TextBlock> </StackPanel> 但是如果我将HyperlinkText.Text设置为一个包装的
<StackPanel>
<TextBlock>
<Hyperlink>
<TextBlock TextWrapping="Wrap" Name="HyperlinkText" />
</Hyperlink>
</TextBlock>
</StackPanel>
但是如果我将HyperlinkText.Text
设置为一个包装的长文本,则整个文本在底部只加了一次下划线(见图)。有没有一种方法可以让每一行都单独划线,而不用手动包装
尝试更改超链接的样式以删除下划线。然后将下划线添加到内部文本块样式本身。实现这一点的更简单方法是使用
Run
而不是TextBlock
希望有帮助。这在WPF中是一个非常非常烦人的问题。我甚至把它叫做虫子 正如@levanovd在他的回答中提到的,您可以使用
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>
唉。我真的很讨厌WPF的
Hyperlink
元素。它只是不能像你期望的那样工作。谢谢,它也能工作,而且简单得多。(我不得不将TextWrapping=“Wrap”从内部文本块移动到外部文本块。)为什么这个链接会让我进行安全检查?要不要发布一些代码?我想试试这个,但不知道如何删除下划线,而不破坏其余的风格。我很懒:-)@skypecakes:levanovd的答案更好。更多信息请参见此:谢谢,斯科特。这看起来很有希望,但不幸的是对我不起作用,因为我正在用数据绑定和.NET3.5填充文本。无法绑定3.5中的Run.Text。我今天不那么懒了,所以我会看看我能想出什么,如果足够好的话,我会把结果作为OP问题的答案发布。@skypecakes:有很多附加属性示例,你可以用它们直接在xaml中绑定不可绑定的属性。回答得好!总结得好!
<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>
<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>