在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属性(即依赖属性)。
有什么想法吗?
答案 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应用程序)上面的示例不起作用,请使用HyperlinkButton并将Content和NavigateUri属性绑定为ususal。