我正在开发一个UWP应用程序,但我有点卡住了。
我在Image
内悬停InlineUIContainer
时尝试显示不同的光标图标,但由于RichTextBlock将光标更改为标准&#我无法使其工作34;文本光标"当我把它悬停时。
我可以解决此问题(在某种程度上)并使用此代码更改光标图标如果我将属性IsTextSelectionEnabled
设置为False
但由于我需要RichTextBox的内容可供选择,我无法做到。
我有点想知道是否有某种方法可以通过禁用IsTextSelectionEnabled
并自己处理/捕获选择事件来解决这个问题,但我不知道我会怎么做这样的事情,因为我有点新到RichTextBlock控件。
<RichTextBlock x:Name="richTextBlock">
<Paragraph>
<Span>Hellu</Span>
</Paragraph>
<Paragraph>
<InlineUIContainer>
<Image
Source="{ Binding url }"
Stretch="Uniform"
PointerEntered="Image_PointerEntered"
PointerExited="Image_PointerExited" />
</InlineUIContainer>
<Paragraph>
</RichTextBlock>
背后的代码
private void Image_PointerEntered(object sender, PointerRoutedEventArgs e)
{
Window.Current.CoreWindow.PointerCursor = new CoreCursor(CoreCursorType.Hand, 0);
}
private void Image_PointerExited(object sender, PointerRoutedEventArgs e)
{
Window.Current.CoreWindow.PointerCursor = new CoreCursor(CoreCursorType.Arrow, 0);
}
答案 0 :(得分:0)
经过一段时间调查这种行为(并使用Interaction.Behavior
玩som XAML-only触发器),似乎没有直接的解决方案。
唯一接近解决方案的是这样的事情:
private TextPointer _start, _end;
private void Image_PointerEntered(object sender, PointerRoutedEventArgs e) {
this._start = this.richTextBlock.SelectionStart;
this._end = this.richTextBlock.SelectionEnd;
this.richTextBlock.IsTextSelectionEnabled = false;
Window.Current.CoreWindow.PointerCursor = new CoreCursor(CoreCursorType.Hand, 1);
}
private void Image_PointerExited(object sender, PointerRoutedEventArgs e) {
this.richTextBlock.IsTextSelectionEnabled = true;
this.richTextBlock.Select(this._start, this._end);
Window.Current.CoreWindow.PointerCursor = new CoreCursor(CoreCursorType.Arrow, 1);
}
当指针进入时,保存当前选择并将IsTextSelectionEnabled
设置为false。离开指针后,所有内容都设置为原点。
不漂亮但可能有效