2011-10-25 4 views
6

Dans XAML Je le code suivant:programme font textblock avec lien hypertexte entre le texte

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

J'aimerais maintenant se débarrasser de toute TextBlock XAML et ajouter ce petit programme. Je n'ai aucun problème à créer le TextBlock, en définissant la propriété Text à "cliquez s'il vous plaît" et en ajoutant un lien hypertexte à TextBlock.Content. Mais comment puis-je positionner le lien hypertexte entre «clic» et «s'il vous plaît»? Et comment puis-je définir le texte de l'hyperlien à «ici»?

Je n'ai pas de choses, à ce jour je suis arrivé est ceci:

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

pensez-vous avez-vous déjà essayé de travailler avec un code? –

+0

J'ai ajouté ce que j'ai mais ce n'est pas beaucoup .. – mtijn

Répondre

11

Voici le code pour ajouter un TextBlock avec un lien cliquable au milieu:

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

presque, mais cela concatène tous les inlines, l'espacement n'est pas préservé – mtijn

+0

@mtijn J'ai ajouté un espace après clic et avant SVP. Cela devrait fonctionner comme prévu maintenant – Nasreddine

+0

Je me demande quand même ... comment le code XAML insère-t-il automatiquement les espaces alors que par programme vous devez être spécifique? devrais-je soulever cela comme une question distincte? – mtijn

Questions connexes