Положение всплывающей подсказки в редакторе Avalon

У меня проблема в редакторе wpf avalon, не задана позиция всплывающей подсказки.

В редакторе Avalon мне нужно установить всплывающую подсказку рядом со словом, когда после пробела набирается пробел.
Но я не получаю никакого решения, чтобы всплывающая подсказка отображала рядом со словом, когда набирается пробел.

toolTip.Placement = PlacementMode.Relative;
toolTip.Content = "aa";
toolTip.IsOpen = true;

person Navita    schedule 19.02.2019    source источник
comment
Я не понимаю, что вы имели в виду под: рядом со словом, когда после слова набирается пробел   -  person sujith karivelil    schedule 19.02.2019


Ответы (1)


Вот пример того, что вы просили:

XAML

<Window x:Class="WpfApp1.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:avalonedit="http://icsharpcode.net/sharpdevelop/avalonedit"
        mc:Ignorable="d"
        Title="Window1" Height="450" Width="800">
     <avalonedit:TextEditor Name="TextEditor" KeyDown="TextEditor_KeyDown" />
</Window>

Код позади:

using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;

namespace WpfApp1
{
    using System.Windows.Controls.Primitives;

    public partial class Window1 : Window
    {
        private ToolTip toolTip;
        public Window1()
        {
            InitializeComponent();
            toolTip = new ToolTip { Placement = PlacementMode.Relative, PlacementTarget = TextEditor};
            TextEditor.ToolTip = toolTip;
        }

        private void TextEditor_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Space)
            {
                var caret = this.TextEditor.TextArea.Caret.CalculateCaretRectangle();
                toolTip.HorizontalOffset = caret.Right;
                toolTip.VerticalOffset = caret.Bottom;
                toolTip.Content = "aa";
                toolTip.IsOpen = true;
            }
            else
            {
                toolTip.IsOpen = false;
            }
        }
    }
}

Результат:

Расположение всплывающей подсказки WPF на каретке

person Edward    schedule 19.02.2019
comment
спасибо, это работает, но когда есть полоса прокрутки, снова позиция всплывающей подсказки не работает - person Navita; 22.02.2019
comment
Когда нет полосы прокрутки, она работает именно так, как вы хотите? - person Edward; 23.02.2019