c# - 在使用附加行为单击按钮后,如何在短时间内显示工具提示?

标签 c# wpf mvvm tooltip attachedbehaviors

我想在单击后立即显示ToolTipButton。然后,ToolTip应该会在短时间内消失。这仅是用户的反馈,因为单击Button会导致将字符串复制到剪贴板。

我使用Button行为通过Click事件显示Button的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;
}

关于c# - 在使用附加行为单击按钮后,如何在短时间内显示工具提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57575580/

相关文章:

c# - 如何许可使用 C# 开发的应用程序

c# - 通过解决方案定义 VisualStudio 颜色主题

c# - 移至CollectionViewSource中的特定项目?

wpf - Material 设计 - Wpf - 文本框 - 更改颜色

c# - 如何从 "traditional"过渡到响应式(Reactive) MVVM

c# - 更改 DataTable 列中每个单元格的值

c# - ASP.NET 5 (vNext) 在 Azure 上导致 500 - 内部服务器错误

c# - 如何使用 MVVM 为用户偏好创建程序架构

.net - 本地数据模板上的 WPF XAML 自定义属性

wpf - Clean Implementation 在 MVVM ViewModel 中显示弹出错误消息