在我的WPF应用程序我有这样的:
<StackPanel>
<TextBlock>
<Hyperlink>
<TextBlock TextWrapping="Wrap" Name="HyperlinkText" />
</Hyperlink>
</TextBlock>
</StackPanel>
但是,如果我设置HyperlinkText.Text
到一个封装了长文,整个文本是在底部(见图片)强调只有一次。 有没有办法有每一行无需人工包装单独强调?
一个简单的方法来实现那就是使用运行 ,而不是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>
直到要超链接中应用文本格式这一伟大工程。 如果你想做到这一点,例如:
<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>
你会得到一个编译错误:
对象“运行”已经有了一个孩子,不能添加'。 “运行”可以接受只生一个孩子。
所以,作为@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>
叹。 我真的很讨厌WPF的Hyperlink
元素。 这是行不通的事情像你期望的那样。
试着改变超链接的样式删除下划线。 然后下划线添加到内部TextBlock的风格本身。