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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top