Как установить текст гиперссылки 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>
однако класс гиперссылки не имеет свойства text или content, подходящего для привязки данных (то есть зависимости свойство.)
какие идеи?
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 (и приложении Windows Phone 8.1 RT) выше пример не работает, используйте HyperlinkButton и bind Content и свойства NavigateUri как ususal.