133

在 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 类没有适合数据绑定的文本或内容属性(即依赖属性)。

有任何想法吗?

4

3 回答 3

224

它看起来很奇怪,但它确实有效。我们在我们的应用程序中的大约 20 个不同的地方执行此操作。如果您将文本放入其“内容”中,则Hyperlink隐式构造 a ,但在 .NET 3.5中不会让您绑定到它,因此您必须显式使用 a 。<Run/><Run/>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}" />
于 2008-09-26T18:00:57.463 回答
13

这在“页面”中对我有用。

<TextBlock>
    <Hyperlink NavigateUri="{Binding Path}">
        <TextBlock Text="{Binding Path=Path}" />
    </Hyperlink>
</TextBlock>
于 2009-11-26T04:49:43.170 回答
2

在 Windows 应用商店应用程序(和 Windows Phone 8.1 RT 应用程序)上面的例子不起作用,使用 HyperlinkBut​​ton 并像往常一样绑定 Content 和 NavigateUri 属性。

于 2014-07-04T19:46:35.157 回答