Cum pot seta textul unui hyperlink WPF prin legarea de date?

În WPF, vreau să creez un hyperlink care navighează la detaliile unui obiect și vreau ca textul hyperlinkului să fie numele obiectului. Chiar acum, am asta:

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

Dar vreau ca „Numele obiectului” să fie legat de numele real al obiectului. As dori sa fac asa ceva:

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

Cu toate acestea, clasa Hyperlink nu are o proprietate de text sau conținut adecvată pentru legarea de date (adică o proprietate de dependență).

Vreo idee?


person rdeetz    schedule 26.09.2008    source sursă


Răspunsuri (3)


Pare ciudat, dar funcționează. O facem în aproximativ 20 de locuri diferite în aplicația noastră. Hyperlink construiește implicit un <Run/> dacă puneți text în „conținutul său”, dar în .NET 3.5 <Run/> nu vă va permite să vă legați de el, așa că trebuie să utilizați în mod explicit un TextBlock.

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

Actualizare: rețineți că, începând cu .NET 4.0, Proprietatea Run.Text poate fi acum legată:

<Run Text="{Binding Path=Name}" />
person Bob King    schedule 26.09.2008
comment
Deci, înseamnă că proprietatea de conținut a unui hyperlink este colecția Inlines? - person Mal Ross; 16.07.2010
comment
Sunt doar eu sau asta împiedică linkul să funcționeze efectiv? - person Tobias Valinski; 26.02.2014
comment
Încă trebuie să gestionați RequestNavigate - person rolls; 20.03.2017

Acest lucru a funcționat pentru mine într-o „Pagină”.

<TextBlock>
    <Hyperlink NavigateUri="{Binding Path}">
        <TextBlock Text="{Binding Path=Path}" />
    </Hyperlink>
</TextBlock>
person Jamie Clayton    schedule 26.11.2009

Pe aplicația Windows Store (și aplicația Windows Phone 8.1 RT) exemplul de mai sus nu funcționează, utilizați HyperlinkButton și legați proprietățile Content și NavigateUri ca de obicei.

person Ivan Ičin    schedule 04.07.2014
comment
docs.microsoft. com/en-us/windows/uwp/design/ - person Ahmed Mohammed; 18.09.2020