【问题标题】:Localizing text that contains links本地化包含链接的文本
【发布时间】:2009-09-05 04:22:54
【问题描述】:

我有一个窗口,其中有一个包含链接的文本块。比如:

这意味着句子中只有“这里”是一个超链接。

我的问题是,我想为本地化做准备。结果,我在 resx 文件中有文本。因此,在 resx 文件中,我将“单击此处阅读文档”作为字符串。

所以我的问题是,我可以编写一些 xaml 来将该字符串显示为文本块,但将“此处”显示为超链接吗?我想我理论上可以放置一些标记来指示超链接部分的开始和结束位置(类似于“单击以阅读文档”,在这种情况下我想要一个超链接。

我知道我可以使用RichTextBox,但我相信RichTextBox 中的超链接只有在按住 ctrl 时才有效。

【问题讨论】:

  • 链接坏了,发给我/locathost/#
  • 链接只是一个例子。我想本地化整个字符串“单击此处阅读文档”。其中“单击”和“阅读文档”是普通文本,“此处”是指向稍后定义的内容的超链接。希望这可以解决问题。

标签: .net wpf xaml hyperlink


【解决方案1】:

strong textstrong text一种方法是将整个文本分成三部分。一个为超链接前的文字,超链接文字本身的一个部分为超链接后的文字。 您的代码和资源应如下所示:

代码:

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


资源:

使用上面的代码,您将收到以下结果。

我在后面的代码中处理示例中的点击,但也可以将命令绑定到超链接。

背后的代码:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多