我有一个RTB,想要通过超链接将鼠标光标更改为MouseEnter
上的一只手。它似乎默认使用Ctrl向下。我希望它只是当用户将鼠标悬停在超链接上时,无论Ctrl是否关闭。
超链接当前从MouseLeftButtonDown
事件向Web浏览器触发,该事件非常有效:
<RichTextBox.Resources>
<Style TargetType="Hyperlink">
<Setter Property="TextDecorations" Value="Underline"/>
<Setter Property="Foreground" Value="Black"/>
<Setter Property="Cursor" Value="Hand"/>
<EventSetter Event="MouseLeftButtonDown" Handler="Hyperlink_MouseLeftButtonDown" />
</Style>
</RichTextBox.Resources>
代码背后:
private void Hyperlink_MouseLeftButtonDown(object sender, System.Windows.Input.MouseEventArgs e)
{
var hyperlink = (Hyperlink)sender;
Process.Start(hyperlink.NavigateUri.ToString());
}
事件按预期触发,它只是MouseEnter
上我想要的手形光标。我可以在同一个Style TargetType='Hyperlink'>
上有两个单独的事件吗?
P.s RTB格式设置为Rtf。 感谢
答案 0 :(得分:0)
通过将事件更改为PreviewLeftMoseButtonDown
来解决此问题:
<RichTextBox.Resources>
<Style TargetType="Hyperlink">
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="Hyperlink_PreviewMouseLeftButtonDown" />
</Style>
</RichTextBox.Resources>
代码背后:
private void Hyperlink_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (Keyboard.IsKeyDown(Key.LeftCtrl))
{
var hyperlink = (Hyperlink)sender;
Process.Start(hyperlink.NavigateUri.ToString());
}
}
这会导致光标变为手动按下Ctrl键,Web浏览器会在鼠标按钮单击时触发链接。我正在使用WPF .NET4.5中的扩展WPF工具箱RTB&amp;将RTB格式化为Rtf到结果可能与其他工具不同。