Come posso impostare il testo di un collegamento ipertestuale WPF tramite associazione dati?
-
02-07-2019 - |
Domanda
In WPF, voglio creare un collegamento ipertestuale che passa ai dettagli di un oggetto e voglio che il testo del collegamento ipertestuale sia il nome dell'oggetto. In questo momento, ho questo:
<TextBlock><Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}">Object Name</Hyperlink></TextBlock>
Ma voglio " Nome oggetto " essere associato al nome effettivo dell'oggetto. Vorrei fare qualcosa del genere:
<TextBlock><Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}" Text="{Binding Path=Name}"/></TextBlock>
Tuttavia, la classe Hyperlink non ha una proprietà text o content adatta per l'associazione dei dati (ovvero una proprietà di dipendenza).
Qualche idea?
Soluzione
Sembra strano, ma funziona. Lo facciamo in circa 20 posti diversi nella nostra app. Hyperlink
costruisce implicitamente un <Run/>
se metti del testo nel suo " contenuto " ;, ma in .NET 3.5 TextBlock
non ti lascerai legare ad esso, quindi devi usa esplicitamente un <=>.
<TextBlock>
<Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}">
<TextBlock Text="{Binding Path=Name}"/>
</Hyperlink>
</TextBlock>
Aggiorna : a partire da .NET 4.0 il La proprietà Run.Text ora può essere associata:
<Run Text="{Binding Path=Name}" />
Altri suggerimenti
Questo ha funzionato per me in una " Pagina " ;.
<TextBlock>
<Hyperlink NavigateUri="{Binding Path}">
<TextBlock Text="{Binding Path=Path}" />
</Hyperlink>
</TextBlock>
Nell'app di Windows Store (e nell'app di Windows Phone 8.1 RT) sopra non funziona, utilizzare HyperlinkButton e associare le proprietà Content e NavigateUri come ususal.