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



какие идеи?

636   3  

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 на выполнить.Свойство Text теперь можно связать:

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

это сработало для меня в "странице".

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

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

Comments

    Ничего не найдено.