Come posso impostare il testo di un collegamento ipertestuale WPF tramite associazione dati?

StackOverflow https://stackoverflow.com/questions/140996

  •  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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top