C# WPF文本中的可点击链接
我有一个文本框,显示一些消息C# WPF文本中的可点击链接,c#,wpf,winforms,textbox,C#,Wpf,Winforms,Textbox,我有一个文本框,显示一些消息 <TextBox VerticalAlignment="Center" HorizontalAlignment="Left" TextWrapping="Wrap" FontFamily="{StaticResource LatoRegular}" Foreground="Black" FontSize="{StaticResource Font
<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"
/>
如果用户在消息中发送了链接,我希望能够检测并单击它,然后在浏览器上打开页面
我的处境:
我的信息可能包含其他文本,甚至不止一个链接。例如“嗨,请访问google.com了解更多信息”。我希望google.com被识别为一个链接,并且可以点击。
有人知道我怎么做吗
或者除了文本框之外,我还能用什么。。我需要它对后面的消息视而不见。您可以使用文本块而不是文本框,方法如下:
<TextBlock>
<Hyperlink NavigateUri="{Binding Message}" RequestNavigate="Hyperlink_RequestNavigate">
<TextBlock Text="{Binding Message}"/>
</Hyperlink>
</TextBlock>
对于您不知道用户是否会发送链接或文本的需求,这将是基本的实现-
您还可以为文本块定义数据模板,该文本块将根据验证用户发送的消息(无论是超链接还是纯文本)后需要设置的某个标志更改为超链接或普通文本块。您如何知道发送的消息是链接?是否有任何属性或你必须从消息中猜测?我不知道消息是否包含链接,这取决于用户是否发布链接请检查下面的更新答案。如果消息中只有一个链接,你的方法可以工作,但我的情况是消息可能包含其他文本或甚至超过1个链接。例如“嗨,请访问google.com了解更多信息”。我希望google.com被识别为一个链接,并且可以点击。
private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e)
{
Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri));
e.Handled = true;
}