wpf - динамическая сложная подсказка - PullRequest
0 голосов
/ 16 ноября 2010

Я хочу создать подсказку динамически, так как подсказка должна содержать сетку с динамическим числом столбцов.

Как мне это сделать?

1 Ответ

1 голос
/ 16 ноября 2010

Вы можете создать новое всплывающее окно и смоделировать всплывающую подсказку в виде этого всплывающего окна.

Вам просто нужно обработать два события: MouseEnter, MouseLeave.

При вводе с помощью мыши вы можете иметь таймерчтобы открыть ваше всплывающее окно через x секунд:

private void Canvas_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e) {
    timer = new Timer(500);
    timer.Elapsed += timer_Elapsed;
    timer.Enabled = true;
}

и, оставив мышью, вы отмените таймер:

private void Canvas_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e) {
   timer.Elapsed -= timer_Elapsed;
   timer = null;
}

по истечении времени вы будете использовать диспетчер, чтобы открыть всплывающее окно:

void timer_Elapsed(object sender, ElapsedEventArgs e) {
    Dispatcher.BeginInvoke(DispatcherPriority.Normal, new oolDelegate(OpenTooltip), true);
}

Метод Open tooltip откроет всплывающее окно:

public void OpenTooltip(bool isOpen) {
    popup.IsOpen = isOpen;
    popup.LostFocus += popup_LostFocus;
}

И вы также можете закрыть его, когда всплывающее окно потеряет фокус

Надеюсь, это поможет

...