¿Cómo puedo configurar el texto de un hipervínculo WPF a través del enlace de datos?

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

  •  02-07-2019
  •  | 
  •  

Pregunta

En WPF, quiero crear un hipervínculo que navegue a los detalles de un objeto, y quiero que el texto del hipervínculo sea el nombre del objeto. En este momento, tengo esto:

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

Pero quiero " Nombre del objeto " estar vinculado al nombre real del objeto. Me gustaría hacer algo como esto:

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

Sin embargo, la clase Hyperlink no tiene una propiedad de texto o contenido que sea adecuada para el enlace de datos (es decir, una propiedad de dependencia).

¿Alguna idea?

¿Fue útil?

Solución

Parece extraño, pero funciona. Lo hacemos en unos 20 lugares diferentes en nuestra aplicación. Hyperlink construye implícitamente un <Run/> si coloca texto en su " content " ;, pero en .NET 3.5 TextBlock no le permitirá enlazarlo, por lo que debe use explícitamente un <=>.

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

Actualización : Tenga en cuenta que a partir de .NET 4.0 el La propiedad Run.Text ahora puede vincularse:

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

Otros consejos

Esto funcionó para mí en una " Página " ;.

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

En la aplicación Windows Store (y la aplicación Windows Phone 8.1 RT) el ejemplo anterior no funciona, use HyperlinkButton y enlace las propiedades de Contenido y NavigateUri como ususuales.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top