带有消息实现超时的StatusBar

本文关键字:StatusBar 超时 实现 消息 | 更新日期: 2023-09-27 17:53:53

我想实现一个状态栏,我将能够在指定的时间内显示消息,之后它们将淡出。

这可以用wpf中任何现成的控件来完成吗?我在StatusBar中找不到这样的功能,据我所知,它是其他项目的容器。

有什么建议吗?

带有消息实现超时的StatusBar

StatusBar实际上只是其他项目的容器。
我想没有这样的内置功能。

但是你可以使用Timer来实现你想要的。

创建一个方法,将文本消息设置为StatusBarItem的内容,在Timer中设置时间,在Timer.Elapsed事件中从StatusBarItem中删除文本。

StatusBar:

<StatusBar Height="25" Margin="5">
    <StatusBarItem x:Name="StatusMessage" />
</StatusBar>

程序代码:

private void ShowStatusMessage(string message)
{
    StatusMessage.Content = message;
    var timer = new System.Timers.Timer();
    timer.Interval = 2000; //2 seconds
    timer.Elapsed += delegate(object sender, System.Timers.ElapsedEventArgs e)
    {
        //stop the timer
        timer.Stop();
        //remove the StatusMessage text using a dispatcher, because timer operates in another thread
        this.Dispatcher.BeginInvoke(new Action(() =>
        {
            StatusMessage.Content = "";
        }));
    };
    timer.Start();
}

如果你想要动画,你应该寻找DoubleAnimation

只需绑定进度条中的数据,并在淡出时更新它。