Como posso definir o texto de uma WPF Hyperlink via ligação de dados?
-
02-07-2019 - |
Pergunta
Em WPF, eu quero criar um hiperlink que navega para os detalhes de um objeto, e eu quero o texto do hyperlink para ser o nome do objeto. Agora, eu tenho este:
<TextBlock><Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}">Object Name</Hyperlink></TextBlock>
Mas eu quero "Nome do objeto" a ser vinculado ao nome real do objeto. Eu gostaria de fazer algo parecido com isto:
<TextBlock><Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}" Text="{Binding Path=Name}"/></TextBlock>
No entanto, a classe Hyperlink não tem um texto ou propriedade de conteúdo que é adequado para vinculação de dados (isto é, uma propriedade de dependência).
Todas as idéias?
Solução
Parece estranho, mas funciona. Fazemo-lo em cerca de 20 lugares diferentes em nosso aplicativo. Hyperlink
constrói implicitamente uma <Run/>
se você colocar um texto no seu "conteúdo", mas em .NET 3.5 <Run/>
não vai deixar você se ligam a ele, então você tem que usar explicitamente um TextBlock
.
<TextBlock>
<Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}">
<TextBlock Text="{Binding Path=Name}"/>
</Hyperlink>
</TextBlock>
Atualizar : Nota que a partir de .NET 4.0 a Run.Text propriedade pode agora ser obrigado:
<Run Text="{Binding Path=Name}" />
Outras dicas
Isso funcionou para mim em uma "Página".
<TextBlock>
<Hyperlink NavigateUri="{Binding Path}">
<TextBlock Text="{Binding Path=Path}" />
</Hyperlink>
</TextBlock>
aplicativo No Windows Store (e Windows Phone 8.1 RT app) acima exemplo não trabalho, uso HyperlinkButton e vincular as propriedades de conteúdo e NavigateUri como ususal.