139 Stimmen

Wie kann ich den Text eines WPF-Hyperlinks über Datenbindung festlegen?

In WPF möchte ich einen Hyperlink erstellen, der zu den Details eines Objekts navigiert, und ich möchte, dass der Text des Hyperlinks der Name des Objekts ist. Im Moment habe ich dies:

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

Aber ich möchte, dass "Objektname" an den tatsächlichen Namen des Objekts gebunden ist. Ich möchte so etwas wie dies tun:

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

Die Klasse Hyperlink verfügt jedoch nicht über eine Text- oder Inhaltseigenschaft, die für die Datenbindung geeignet ist (d. h. eine Abhängigkeitseigenschaft).

Irgendwelche Ideen?

234voto

Bob King Punkte 24518

Es sieht seltsam aus, aber es funktioniert. Wir machen das an etwa 20 verschiedenen Stellen in unserer App. Hyperlink konstruiert implizit eine <Run/> wenn Sie Text in den "Inhalt" eingeben, aber in .NET 3.5 <Run/> lässt Sie nicht daran binden, also müssen Sie explizit eine TextBlock .

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

Update : Beachten Sie, dass ab .NET 4.0 die Eigenschaft Run.Text kann nun gebunden werden:

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

14voto

Jamie Clayton Punkte 131

Das hat bei mir auf einer "Seite" funktioniert.

<TextBlock>
    <Hyperlink NavigateUri="{Binding Path}">
        <TextBlock Text="{Binding Path=Path}" />
    </Hyperlink>
</TextBlock>

2voto

Ivan Ičin Punkte 9021

Auf Windows Store app (und Windows Phone 8.1 RT app) oben genannten Beispiel funktioniert nicht, verwenden Sie HyperlinkButton und binden Content und NavigateUri Eigenschaften wie ususal.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X