wpf - 动态复杂的工具提示

时间:2010-11-16 16:05:31

标签: wpf tooltip

我想动态生成工具提示,因为工具提示必须包含具有动态列数的网格。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以创建一个新的Popup并将该工具提示模拟为Popup。

你只需要处理这两个事件: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工具提示方法将打开弹出窗口:

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

当弹出窗口失去焦点时你也可以关闭它

希望这可以提供帮助