在 WPF 中,我得到一个工具提示,以便立即显示 :
TextBlock tb = new TextBlock();
tb.Text = name;
ToolTip tt = new ToolTip();
tt.Content = "This is some info on " + name + ".";
tb.ToolTip = tt;
tt.Cursor = Cursors.Help;
ToolTipService.SetInitialShowDelay(tb, 0);
这使用户体验更好,因为如果用户想要查看页面上五个项目的工具提示,他就不必等待每次秒。
但由于Silverlight没有SetInitialShowDelay,有什么方法可以立即显示工具提示?
答案 0 :(得分:2)
您需要挂钩MouseEnter事件并自行显示: -
TextBlock tb = new TextBlock();
tb.Text = name;
ToolTip tt = new ToolTip();
tt.Content = "This is some info on " + name + ".";
ToolTipService.SetToolTip(tb, tt);
tb.MouseEnter += (s, args) => {
((ToolTip)ToolTipService.GetToolTip((DependencyObject)s)).IsOpen = true;
};
答案 1 :(得分:1)
除了重新实现鼠标输入(或整个工具提示服务)之外,我担心你可能会失败 - 你看到的延迟实际上是硬编码到TooltipService的“OnOwnerMouseEnter”方法中: / p>
(由Reflector提供)
TimeSpan span = (TimeSpan) (DateTime.Now - _lastToolTipOpenedTime);
if (TimeSpan.Compare(span, new TimeSpan(0, 0, 0, 0, 100)) <= 0)
{
OpenAutomaticToolTip(null, EventArgs.Empty);
}
else
{
if (_openTimer == null)
{
_openTimer = new DispatcherTimer();
_openTimer.Tick += new EventHandler(ToolTipService.OpenAutomaticToolTip);
}
_openTimer.Interval = new TimeSpan(0, 0, 0, 0, 400);
_openTimer.Start();
}