如何通过数据绑定设置WPF超链接的文本?
时间:2020-03-06 14:47:50 来源:igfitidea点击:
在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属性(即,依赖项属性)。
有任何想法吗?
解决方案
看起来很奇怪,但是可以。我们在应用程序的大约20个不同位置执行此操作。如果将文本放入"内容"中,则"超链接"会隐式构造一个" <运行/>",但是在.NET 3.5中," <运行/>"将不允许我们对其进行绑定,因此必须显式使用一个" 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}" />
这在"页面"中为我工作。
<TextBlock> <Hyperlink NavigateUri="{Binding Path}"> <TextBlock Text="{Binding Path=Path}"/> </Hyperlink></TextBlock>