Wie kann ich den Text einer WPF Hyperlink über Datenbindung?
-
02-07-2019 - |
Frage
In WPF, ich möchte einen Hyperlink erstellen, die auf die Details eines Objekts navigiert, und ich möchte den Text des Hyperlinks der Name des Objekts sein. Gerade jetzt, ich habe dies:
<TextBlock><Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}">Object Name</Hyperlink></TextBlock>
Aber ich will „Object Name“, um auf den tatsächlichen Namen des Objekts gebunden werden. Ich möchte so etwas wie dies tun:
<TextBlock><Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}" Text="{Binding Path=Name}"/></TextBlock>
Allerdings ist die Hyperlink-Klasse keinen Text oder Inhalt Eigenschaft, die für Daten geeignet ist verbindlich (dh, eine Abhängigkeitseigenschaft).
Irgendwelche Ideen?
Lösung
Es sieht seltsam, aber es funktioniert. Wir tun es in etwa 20 verschiedenen Orten in unserer App. Hyperlink
implizit erstellt ein <Run/>
, wenn Sie Text in seinem „Inhalt“ setzen, aber in .NET 3.5 <Run/>
werden Sie es nicht zulassen, binden, so dass Sie haben explizit eine TextBlock
zu verwenden.
<TextBlock>
<Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}">
<TextBlock Text="{Binding Path=Name}"/>
</Hyperlink>
</TextBlock>
Aktualisieren : Beachten Sie, dass ab .NET 4.0 die Run.Text Eigenschaft jetzt gebunden werden kann:
<Run Text="{Binding Path=Name}" />
Andere Tipps
Das funktionierte für mich in einer "Seite".
<TextBlock>
<Hyperlink NavigateUri="{Binding Path}">
<TextBlock Text="{Binding Path=Path}" />
</Hyperlink>
</TextBlock>
Unter Windows Store App (und Windows Phone 8.1 RT app) obigen Beispiel nicht funktioniert, verwenden Hyperlink und binden Inhalt und NavigateUri Eigenschaften wie ususal.