点击在RichTextBox中的超链接不按住CTRL - WPF
-
11-09-2019 - |
题
我有一个WPF的RichTextBox与isReadOnly
设置为True
。我希望用户能够点击包含在RichTextBox中的超链接,他们无需按住<大骨节病>控制骨节病>。
在超链接的点击事件似乎并不火,除非<大骨节病>控制骨节病>是持有了,所以我不能确定如何进行。
解决方案 3
设法找到解决的办法,非常意外。
这的加载到我的RichTextBox的内容只是存储(或输入),为纯字符串。我已经子类RichTextBox的,以允许针对它的文档属性绑定。
什么是相关的问题是,我有一个的IValueConverter转换()重载,看起来像这样(代码非必要的解决方案已被剥离出来):
FlowDocument doc = new FlowDocument();
Paragraph graph = new Paragraph();
Hyperlink textLink = new Hyperlink(new Run(textSplit));
textLink.NavigateUri = new Uri(textSplit);
textLink.RequestNavigate +=
new System.Windows.Navigation.RequestNavigateEventHandler(navHandler);
graph.Inlines.Add(textLink);
graph.Inlines.Add(new Run(nonLinkStrings));
doc.Blocks.Add(graph);
return doc;
这让我我想要(搡普通字符串到RichTextBox的和得到的格式)的行为,同时也导致其行为像一个正常的链接,而不是一个内容内嵌在Word文档中的链接。
其他提示
我发现了一个解决方案。设置IsDocumentEnabled为“True”和IsReadOnly设置为“真”。
<RichTextBox IsReadOnly="True" IsDocumentEnabled="True" />
在我这样做时,鼠标会变成一个“手”时我悬停在一个超链接标记内显示的文本。点击不保持控制将触发“点击”事件。
我使用WPF从.NET 4.我不知道,如果早期版本的.NET正如我上面描述不起作用。
JHubbard80 的答案是一个可行的解决方案,这是最简单的方式,如果你不需要的内容进行选择
不过,我需要的是:P这里是我的方法:设置样式为Hyperlink
内RichTextBox
s。基本是使用EventSetter
使Hyperlink
s处理MouseLeftButtonDown
事件。
<RichTextBox>
<RichTextBox.Resources>
<Style TargetType="Hyperlink">
<Setter Property="Cursor" Value="Hand" />
<EventSetter Event="MouseLeftButtonDown" Handler="Hyperlink_MouseLeftButtonDown" />
</Style>
</RichTextBox.Resources>
</RichTextBox>
和在代码隐藏:
private void Hyperlink_MouseLeftButtonDown(object sender, MouseEventArgs e)
{
var hyperlink = (Hyperlink)sender;
Process.Start(hyperlink.NavigateUri.ToString());
}
由于 gcores ,在inspiaration。
您是否尝试过处理MouseLeftButtonDown事件,而不是Click事件?
我从@ hillin的回答改变EventSetter。 的MouseLeftButtonDown 的在我的代码(.NET框架4.5.2)没有工作。
<EventSetter Event="RequestNavigate" Handler="Hyperlink_RequestNavigate" />
private void Hyperlink_RequestNavigate(object sender, System.Windows.Navigation.RequestNavigateEventArgs e)
{
Process.Start(e.Uri.ToString());
}