如何通过数据绑定设置WPF超链接的文本?


129

在WPF中,我想创建一个导航到对象详细信息的超链接,并且希望该超链接的文本成为该对象的名称。现在,我有这个:

<TextBlock><Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}">Object Name</Hyperlink></TextBlock>

但我希望将“对象名称”绑定到对象的实际名称。我想做这样的事情:

<TextBlock><Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}" Text="{Binding Path=Name}"/></TextBlock>

但是,Hyperlink类没有适合于数据绑定的text或content属性(即,依赖项属性)。

有任何想法吗?

Answers:


212

看起来很奇怪,但是可以。我们在应用程序的大约20个不同位置执行此操作。如果将文本放在其“内容”中,则Hyperlink隐式构造一个a <Run/>,但是在.NET 3.5中,<Run/>您无法将其绑定到它,因此必须显式使用a TextBlock

<TextBlock>
    <Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}">
        <TextBlock Text="{Binding Path=Name}"/>
    </Hyperlink>
</TextBlock>

更新:请注意,从.NET 4.0开始,可以绑定Run.Text属性

<Run Text="{Binding Path=Name}" />

那么,这是否意味着超链接的content属性是Inlines集合?
马尔·罗斯

4
只是我还是这会阻止链接实际运行?
Tobias Valinski

你仍然需要处理RequestNavigate


1

在上面的示例的Windows Store应用程序(和Windows Phone 8.1 RT应用程序)上不起作用,请使用HyperlinkBut​​ton并将“内容”和“ NavigateUri”属性绑定为常用的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.