132 votes

Comment puis-je définir le texte du lien hypertexte via la liaison de données WPF ?

Dans WPF, je souhaite créer un lien hypertexte permettant d'accéder aux détails d'un objet, et je veux que le texte du lien hypertexte pour être le nom de l'objet. Maintenant, j'ai ceci:

<TextBlock><Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}">Object Name</Hyperlink></TextBlock>

Mais ce que je veux "Nom d'Objet" à être lié par le nom réel de l'objet. Je voudrais faire quelque chose comme ceci:

<TextBlock><Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}" Text="{Binding Path=Name}"/></TextBlock>

Toutefois, le lien Hypertexte de la classe ne dispose pas d'un texte ou le contenu de la propriété, qui est approprié pour la liaison de données (c'est une propriété de dépendance).

Des idées?

222voto

Bob King Points 12913

Il semble étrange, mais ça fonctionne. Nous le faisons dans 20 endroits différents dans notre application. Lien hypertexte implicitement construit un <Run/> si vous mettez le texte dans son "contenu", mais dans .Net 3.5 <Run/> ne vous laisse pas lier à elle, de sorte que vous avez à utiliser explicitement un textblock.

<TextBlock>
    <Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}">
        <TextBlock Text="{Binding Path=Name}"/>
    </Hyperlink>
</TextBlock>

Mise à jour: Notez que comme de .NET 4.0 l' Exécuter.Propriété de texte peut maintenant être lié:

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

12voto

Jamie Clayton Points 31

Cela a fonctionné pour moi dans une « Page ».

2voto

Ivan Ičin Points 1133

Sur Windows Store app (application Windows Phone 8.1 RT) exemple ci-dessus pas travailler, utiliser HyperlinkButton et lier les propriétés Content et NavigateUri comme ususal.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X