Dans WPF, je veux créer un lien hypertexte qui navigue vers les détails d'un objet, et je veux que le texte du lien hypertexte soit le nom de l'objet. En ce moment, j'ai ceci:
<TextBlock><Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}">Object Name</Hyperlink></TextBlock>
Mais je veux que "Nom de l'objet" soit lié au nom réel de l'objet. Je voudrais faire quelque chose comme ça:
<TextBlock><Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}" Text="{Binding Path=Name}"/></TextBlock>
Toutefois, la classe Hyperlink n'a pas de propriété de texte ou de contenu qui convient à la liaison de données (c'est-à-dire une propriété de dépendance).
Des idées?
Cela semble étrange, mais cela fonctionne. Nous le faisons dans environ 20 endroits différents dans notre application. Hyperlink
construit implicitement un <Run/>
si vous mettez du texte dans son "contenu", mais dans .NET 3.5 <Run/>
ne vous laissera pas vous y lier, vous devez donc utiliser explicitement un TextBlock
.
<TextBlock>
<Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}">
<TextBlock Text="{Binding Path=Name}"/>
</Hyperlink>
</TextBlock>
Mise à jour : Notez que depuis .NET 4.0, la propriété Run.Text peut maintenant être liée:
<Run Text="{Binding Path=Name}" />
Cela a fonctionné pour moi dans une "Page".
<TextBlock>
<Hyperlink NavigateUri="{Binding Path}">
<TextBlock Text="{Binding Path=Path}" />
</Hyperlink>
</TextBlock>
Dans l'application Windows Store (et Windows Phone 8.1 RT) ci-dessus, l'exemple ci-dessus ne fonctionne pas, utilisez HyperlinkButton et liez les propriétés Content et NavigateUri comme une utilisation.