我试图找出如何仅在禁用选项卡时显示工具提示,但是在鼠标/触摸事件以及鼠标悬停时。现在,当我将鼠标悬停在桌面显示器上的禁用选项卡上时,我正在努力显示工具提示。但是,在我的触摸屏设备上,触摸标签显示工具尖端约20ms。这是因为鼠标按下事件似乎清除了工具提示。这是我到目前为止所做的工作:
<TabItem Name="BiosTab" IsEnabled="{Binding Path=EnableAllTabs}"
Header="Peripherals/BIOS" Height="64" Style="{StaticResource GlowTabItem}"
ToolTip="{Binding Path=TabToolTip}" ToolTipService.ShowOnDisabled="True"
ToolTipService.InitialShowDelay="0" PreviewMouseLeftButtonDown="BiosTab_MouseLeftButtonDown">
快速背景: 我们有3个选项卡,每个选项卡显示可按类别安装的文件列表。必须先安装必需的文件类别,然后才能安装其他组中的其他文件。因此,在安装或选择安装这些项目之前,其他选项卡将保持禁用状态。为了方便用户,我希望当用户尝试激活其中一个禁用选项卡时显示工具提示。
不幸的是,在禁用选项卡时不会调用PreviewMouseLeftButtonDown事件,因此该部分没有帮助。
任何想法都会非常感激。
由于
答案 0 :(得分:1)
您可能想要查找WPF Toast通知库。
同时,一个简单的解决方案可能就是:
TabItems
并处理CanExecute
行为。 TabItem
样式(您可能需要
虽然区分了它们。ToolTip
打开和关闭按钮*或鼠标离开。private Timer Timer { get; set; }
private ToolTip ToolTip { get; set; }
{
...
Timer = new Timer();
Timer.Interval = 3000;
Timer.Elapsed += OnTimerElapsed;
BiosTab.MouseLeave += OnMouseLeave;
BiosTab.MouseLeftButtonUp += OnMouseButtonUp;
}
public void OnMouseLeave(object sender, MouseEventArgs e)
{
CloseToolTip();
}
public void OnMouseButtonUp(object sender, MouseButtonEventArgs e)
{
Timer.Stop();
ToolTip = ((ToolTip)((Control)sender).ToolTip);
ToolTip.IsOpen = true;
Timer.Start();
}
private void CloseToolTip()
{
if (ToolTip != null)
{
ToolTip.IsOpen = false;
ToolTip = null;
}
}
private void OnTimerElapsed(object sender, ElapsedEventArgs e)
{
Timer.Stop();
Application.Current.Dispatcher.BeginInvoke((Action)CloseToolTip, DispatcherPriority.Send);
}