2011-10-25 17 views
6

Trong XAML Tôi có đoạn mã sau:lập trình làm cho TextBlock với siêu liên kết trong văn bản giữa

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

Bây giờ tôi muốn thoát khỏi toàn bộ TextBlock XAML và thêm rằng chút lập trình. Tôi không gặp khó khăn khi tạo TextBlock, đặt thuộc tính Text thành 'click please' và thêm một siêu liên kết đến TextBlock.Content. Nhưng làm thế nào để tôi đặt Hyperlink ở giữa 'click' và 'please'? Và làm cách nào để đặt văn bản của siêu liên kết thành 'ở đây'?

tôi đã không bị nhiều đang xảy ra, cho đến nay tất cả tôi nhận là thế này:

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

làm bạn có bất kỳ mã nào bạn đã thử làm việc cùng không? –

+0

Tôi đã thêm những gì tôi có nhưng nó không nhiều .. – mtijn

Trả lời

11

Dưới đây là đoạn code để thêm một TextBlock với một liên kết có thể click vào giữa:

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

gần như, nhưng điều này nối tất cả các dòng, khoảng cách không được bảo quản – mtijn

+0

@mtijn Tôi đã thêm một dấu cách sau khi nhấp và trước Vui lòng. Nó sẽ làm việc như mong đợi bây giờ – Nasreddine

+0

Tôi vẫn còn tự hỏi mặc dù .. làm thế nào đến mã XAML chèn không gian tự động trong khi lập trình bạn phải được cụ thể ?? tôi có nên nêu điều này như một câu hỏi riêng biệt không? – mtijn

Các vấn đề liên quan