使用附加行为单击按钮后,如何在短时间内显示工具提示?
How can I show a ToolTip for a short period of time after clicking on a Button using attached-behaviors?
我想在点击后立即显示 ToolTip
或 Button
。 ToolTip
应该会在短时间后消失。这只是作为对用户的反馈,因为单击 Button
会导致将字符串复制到剪贴板。
我使用 Button-Behavior 通过 Click-Event 显示按钮的 Tooltip
。为了显示 ToolTip
,我将其 IsOpen
属性 设置为 true。
class ForceToolTipBehavior : Behavior<Button>
{
protected override void OnAttached()
{
base.OnAttached();
this.AssociatedObject.Click += AssociatedObject_Click;
}
private void AssociatedObject_Click(object sender, System.Windows.RoutedEventArgs e)
{
var tooltip = this.AssociatedObject.ToolTip as ToolTip;
tooltip = new ToolTip();
tooltip.Content = "Log was copied to your Clipboard";
tooltip.IsOpen = true;
}
}
这很好用,但 ToolTip
保持打开状态。有什么优雅的方法可以让 ToolTip
在一秒钟后消失吗?是否可以使用 ToolTipService
完成该任务?
简单快捷的方法:
private void AssociatedObject_Click(object sender, System.Windows.RoutedEventArgs e)
{
var tooltip = this.AssociatedObject.ToolTip as ToolTip;
tooltip = new ToolTip();
tooltip.Content = "Log was copied to your Clipboard";
tooltip.IsOpen = true;
HideToolTip(tooltip);
}
private async void HideToolTip(ToolTip toolTip)
{
await Task.Delay(3 * 1000); // 3 second
toolTip.IsOpen = false;
}
我想在点击后立即显示 ToolTip
或 Button
。 ToolTip
应该会在短时间后消失。这只是作为对用户的反馈,因为单击 Button
会导致将字符串复制到剪贴板。
我使用 Button-Behavior 通过 Click-Event 显示按钮的 Tooltip
。为了显示 ToolTip
,我将其 IsOpen
属性 设置为 true。
class ForceToolTipBehavior : Behavior<Button>
{
protected override void OnAttached()
{
base.OnAttached();
this.AssociatedObject.Click += AssociatedObject_Click;
}
private void AssociatedObject_Click(object sender, System.Windows.RoutedEventArgs e)
{
var tooltip = this.AssociatedObject.ToolTip as ToolTip;
tooltip = new ToolTip();
tooltip.Content = "Log was copied to your Clipboard";
tooltip.IsOpen = true;
}
}
这很好用,但 ToolTip
保持打开状态。有什么优雅的方法可以让 ToolTip
在一秒钟后消失吗?是否可以使用 ToolTipService
完成该任务?
简单快捷的方法:
private void AssociatedObject_Click(object sender, System.Windows.RoutedEventArgs e)
{
var tooltip = this.AssociatedObject.ToolTip as ToolTip;
tooltip = new ToolTip();
tooltip.Content = "Log was copied to your Clipboard";
tooltip.IsOpen = true;
HideToolTip(tooltip);
}
private async void HideToolTip(ToolTip toolTip)
{
await Task.Delay(3 * 1000); // 3 second
toolTip.IsOpen = false;
}