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

时间:2008-09-26 17:58:32

标签: wpf data-binding hyperlink

在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属性(即依赖属性)。

有什么想法吗?

3 个答案:

答案 0 :(得分:198)

看起来很奇怪,但它确实有效。我们在应用程序的大约20个不同的地方进行。如果你将文本放在“内容”中,Hyperlink隐式构造<Run/>,但在.NET 3.5 <Run/>中不允许你绑定它,所以你必须明确地使用它TextBlock

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

更新:请注意,从.NET 4.0开始,Run.Text property现在可以绑定:

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

答案 1 :(得分:8)

这对我来说是一个“页面”。

<TextBlock>
    <Hyperlink NavigateUri="{Binding Path}">
        <TextBlock Text="{Binding Path=Path}" />
    </Hyperlink>
</TextBlock>

答案 2 :(得分:1)

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