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

wyyhbhjk  于 2023-02-13  发布在  其他
关注(0)|答案(3)|浏览(158)

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

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

但我希望"Object Name"绑定到对象的实际名称。我想做如下操作:

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

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

dzhpxtsq

dzhpxtsq1#

这看起来很奇怪,但它确实有效,我们在应用程序中大约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}" />
agxfikkp

agxfikkp2#

这在一个“页面”中对我起作用了。

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

92dk7w1h3#

在Windows应用商店应用程序(和Windows Phone 8.1 RT应用程序)上,上面的示例不起作用,请使用HyperlinkButton并按照惯例绑定Content和NavigateUri属性。

相关问题