2011-10-25 10 views
6

w XAML Mam następujący kod:programowo zrobić textblock z hiperłącza między tekst

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

Teraz chciałbym się pozbyć całego TextBlock XAML i dodać ten kawałek programowo. Nie mam problemu z utworzeniem TextBlock, ustawienie właściwości Text na "kliknij proszę" i dodanie hiperłącza do TextBlock.Content. Ale w jaki sposób ustawić Hiperłącze pomiędzy "kliknięciem" a "proszę"? I jak ustawić tekst hiperłącza na "tutaj"?

nie mam dużo się dzieje, do tej pory wszystko, co mam jest to:

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

Lubisz masz jakiś kod, z którym już próbowałeś współpracować? –

+0

Dodałem, co mam, ale to niewiele .. – mtijn

Odpowiedz

11

Oto kod, aby dodać TextBlock z klikalny link w środku:

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

prawie, ale to łączy wszystkie linie, odstępy nie są zachowywane – mtijn

+0

@mtijn Dodałem spację po kliknięciu i przed Proszę. Powinno działać zgodnie z oczekiwaniami. – Nasreddine

+0

Ciągle się zastanawiam ... jak to się stało, że kod XAML wstawił spacje automatycznie, podczas gdy programowo musisz być specyficzny? czy powinienem podnieść to pytanie jako osobne pytanie? – mtijn