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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top