2009-09-05 45 views
0

我有這樣的窗口,在這裏我有一個包含一個鏈接的文本塊。喜歡的東西:本地化的文本鏈接

這意味着只有「這裏」在句子中是一個超鏈接。

我的問題是,我想爲本地化準備這個。因此,我在resx文件中有文本。所以在resx文件中我有「點擊這裏閱讀文檔」的字符串。

所以我的問題是,我可以寫一些XAML,將顯示該字符串的文本塊,但顯示「這裏」作爲超鏈接?我理論上可以用一些標記來表示超鏈接部分開始和結束的位置,我想(就像「點擊閱讀文檔」,在這種情況下,我想要一個超鏈接。

我知道我可以使用RichTextBox,但我相信在RichTextBox中的超鏈接只有在按住ctrl時才起作用

+0

的鏈接斷開,送我去/ locathost /# – Tom 2009-09-05 04:24:03

+0

的聯繫只是一個例子。我想本地化整個字符串「點擊這裏閱讀文檔。」其中「點擊」和「閱讀文檔」是普通文本,「這裏」是超鏈接,指向稍後定義的內容。 希望這將清除的東西了。 – 2009-09-06 19:54:19

回答

0

強壯的textstrong文字一種方式是將整個文本分成三部分,一部分爲超鏈接之前的文本,超鏈接文本本身,一部分爲文本之後的部分超鏈接 您的代碼和資源應如下所示:

代碼:

<TextBlock> 
    <Run Text="{x:Static Properties:Resources.TextBlock_LinkFirstPart}" /> 
    <Hyperlink NavigateUri="http://www.google.com" 
      RequestNavigate="Hyperlink_RequestNavigate"> 
     <Run Text="{x:Static Properties:Resources.TextBlock_LinkPart}" /> 
    </Hyperlink> 
    <Run Text="{x:Static Properties:Resources.TextBlock_LinkSecondPart}" /> 
</TextBlock> 


資源: image of the resource file

有了上面的代碼,你會recive以下結果。

enter image description here

我處理click在我的代碼示例後面,但它也可以命令綁定到超鏈接。

後面的代碼:

private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e) 
{ 
    Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri)); 
    e.Handled = true; 
}