Как установить текст гиперссылки WPF через привязку данных?

В 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 не имеет свойства текста или содержимого, которое подходит для привязки данных (т.е. свойства зависимостей).

Любые идеи?

Ответ 1

Это выглядит странно, но он работает. Мы делаем это примерно в 20 разных местах в нашем приложении. Hyperlink неявно строит a <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:

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

Ответ 2

Это сработало для меня в "Пейдж".

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

Ответ 3

В приложении Windows Store (и приложении Windows Phone 8.1 RT) выше пример не работает, используйте HyperlinkButton и привяжите свойства Content и NavigateUri как ususal.