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

Любые идеи?


person rdeetz    schedule 26.09.2008    source источник


Ответы (3)


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

<Run Text="{Binding Path=Name}" />
person Bob King    schedule 26.09.2008
comment
Итак, означает ли это, что свойство содержимого гиперссылки - это коллекция Inlines? - person Mal Ross; 16.07.2010
comment
Это только у меня или это мешает работе ссылки? - person Tobias Valinski; 26.02.2014
comment
Вам все еще нужно обработать RequestNavigate - person rolls; 20.03.2017

Это сработало для меня на «Странице».

<TextBlock>
    <Hyperlink NavigateUri="{Binding Path}">
        <TextBlock Text="{Binding Path=Path}" />
    </Hyperlink>
</TextBlock>
person Jamie Clayton    schedule 26.11.2009

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

person Ivan Ičin    schedule 04.07.2014
comment
docs.microsoft. ru / en-us / windows / uwp / design / - person Ahmed Mohammed; 18.09.2020