2011-10-25 10 views
6

En XAML tengo el siguiente código:programación hacen bloque de texto con hipervínculo en el texto entre

<Label Width="120" Height="20" Name="label1" SnapsToDevicePixels="True" HorizontalAlignment="Left" VerticalAlignment="Bottom"> 
     <TextBlock VerticalAlignment="Center" HorizontalAlignment="Left"> 
      click 
      <Hyperlink RequestNavigate="Hyperlink_RequestNavigate" NavigateUri="foo">here</Hyperlink> 
      please 
     </TextBlock> 
    </Label> 

Ahora me gustaría deshacerse de todo el TextBlock XAML y añadir ese toque mediante programación. No tengo problemas para crear TextBlock, establecer la propiedad Text para 'hacer clic por favor' y agregar un hipervínculo al TextBlock.Content. ¿Pero cómo posiciono el hipervínculo entre 'clic' y 'por favor'? ¿Y cómo configuro el texto del hipervínculo a 'aquí'?

no tengo mucho que hacer, hasta ahora todo lo que tengo es esta:

label2.Content = new TextBlock() { Text = "click please" }; 
    //(label2.Content as TextBlock).Content does not exist? 
    //and even if it does.. how do I squeeze the hyperlink in between the text? 
+0

que hacer ¿Tiene algún código con el que haya intentado trabajar? –

+0

Agregué lo que tengo, pero no es mucho ... – mtijn

Respuesta

11

Aquí está el código para añadir un TextBlock con un enlace activo en el medio:

Run run1 = new Run("click "); 
Run run2 = new Run(" Please"); 
Run run3 = new Run("here."); 

Hyperlink hyperlink = new Hyperlink(run3) 
         { 
          NavigateUri = new Uri("http://stackoverflow.com") 
         }; 
hyperlink.RequestNavigate += new System.Windows.Navigation.RequestNavigateEventHandler(hyperlink_RequestNavigate); //to be implemented 
textBlock1.Inlines.Clear(); 
textBlock1.Inlines.Add(run1); 
textBlock1.Inlines.Add(hyperlink); 
textBlock1.Inlines.Add(run2); 
+0

casi, pero esto concatena todas las líneas, el espacio no se conserva – mtijn

+0

@mtijn He añadido un espacio después de hacer clic y antes de Por favor. Debería funcionar como se espera ahora – Nasreddine

+0

Todavía me pregunto ... ¿cómo es que el código XAML insertó espacios automáticamente mientras que programáticamente tienes que ser específico? ¿Debo plantear esto como una pregunta separada? – mtijn

Cuestiones relacionadas