2016-08-21 4 views
1

私はUWPアプリケーションを開発していますが、ちょっと固まってしまいました。選択可能なRichTextBlockで、ホバーインラインコンテンツのカーソルを変更します。

InlineUIContainerの中にImageをホバーするときに別のカーソルアイコンを表示しようとしていますが、カーソルを置いたときにRichTextBlockがカーソルを標準の「テキストカーソル」に変更しているため動作しません。

I缶(ある程度まで)、これを解決するため、私はFalse にプロパティIsTextSelectionEnabledを設定するが、私は選択可能にリッチテキストボックスの内容を必要とするので、私はできない場合は、このコードでカーソルアイコンを変更それを行う。

IsTextSelectionEnabledを無効にして、これを解決する何らかの方法があるのか​​ちょっと疑問に思っていましたが、選択イベントを自分で処理/取り込みましたが、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

背後

<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> 

コードこの動作を調査する(そして、SOMのXAMLのみのトリガを行うためにInteraction.Behaviorで遊んで)かなりの時間が経過した後、まっすぐ進むのソリューションが存在しないようです。解決に近づく

唯一のことは、このようなものです:ポインタが入ると

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に設定されています。ポインタを離れると、すべてが原点に設定されます。

きれいではありませんが、動作する可能性があります

関連する問題