WPF文本中的可点击链接

时间:2018-05-28 08:25:34

标签: c# wpf winforms textbox

我有一个显示一些消息的文本框......

        <TextBox VerticalAlignment="Center"
          HorizontalAlignment="Left"
          TextWrapping="Wrap"
          FontFamily="{StaticResource LatoRegular}"
          Foreground="Black"
          FontSize="{StaticResource FontSizeRegular}"
          Text="{Binding Message}"
           Background="Transparent"
           BorderThickness="0"
           Padding="0"
           Margin="0"
           IsReadOnly="True"
                                       />

如果用户在邮件中发送了一个链接,我希望能够检测并点击它并在浏览器上打开页面。

我的情况: 我的消息可能包含其他文本或甚至超过1个链接。 E.g&#34;您好请访问google.com获取更多信息&#34;。我希望google.com被识别为链接并且可以点击。

任何人都知道我该怎么办?

或者除了文本框之外还有什么我可以使用..我需要它来隐藏

背后的信息

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式使用TextBlock而不是TextBox:

<TextBlock>
        <Hyperlink NavigateUri="{Binding Message}" RequestNavigate="Hyperlink_RequestNavigate">
            <TextBlock Text="{Binding Message}"/>
        </Hyperlink>
</TextBlock>

Hyperlink_RequestNavigate:将成为您的事件处理程序,您将通过Process.Start打开浏览器

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

这将是基本的实施,根据您的要求,您不知道用户是否会发送链接或某些文字 -

  1. 在同一个地方有两个控件:

    一个。一个简单的文本块,用于显示不是超链接的文本。

    湾上面显示的一个超链接文本块。

  2. 为每个控件的可见性创建一个标志,在用户发送时验证消息,并根据消息是链接还是纯文本设置标志。

  3. 或者

    您还可以为文本块定义一个数据模板,该模板将根据您在验证用户发送的消息后需要设置的某个标志更改为超链接或普通文本块,无论是超链接还是仅仅是纯文本。