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