首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF工具包BusyIndicator

WPF工具包BusyIndicator
EN

Stack Overflow用户
提问于 2016-08-26 16:48:34
回答 1查看 2.1K关注 0票数 0

我在试图更新UI时遇到了问题。我需要的是,在显示BusyIndicator之后,需要更改消息,完成5秒后,再显示另一条消息2秒,然后隐藏BusyIndicator。谢谢!

XAML

代码语言:javascript
复制
<xctk:BusyIndicator IsBusy="{Binding IsBusy}" DisplayAfter="0">
    <xctk:BusyIndicator.BusyContentTemplate>
        <DataTemplate>
            <StackPanel>
                <mahApps:ProgressRing IsActive="{Binding IsBusy}"/>
                <Label Content="{Binding ShowMessage}"/>
            </StackPanel>
        </DataTemplate>
    </xctk:BusyIndicator.BusyContentTemplate>

    ...

</xctk:BusyIndicator>

XAML ViewModel

代码语言:javascript
复制
public string ShowMessage
{
    get { return _showMessage; }
    set
    {
        _showMessage = value;
        RaisePropertyChanged("ShowMessage");
    }
}

private void Save()
{
    ShowMessage = "Wait please...";

    Task.Factory.StartNew(() =>
    {
        IsBusy = true; // Show busyindicator and ProgressRing

        Thread.Sleep(5000); // 5 seconds to see the animation (Here is a SQL insert)

        /// Hide ProgressRing only

        ShowMessage = "Save complete.";

        Thread.Sleep(2000); // 2 seconds to see "ShowMessage"

    }).ContinueWith(x =>
    {
        IsBusy = false; // hide busyindicator and ProgressRing

        ...

    }, TaskScheduler.FromCurrentSynchronizationContext());
}

EN

回答 1

Stack Overflow用户

发布于 2017-08-10 21:37:32

有点晚了,但是,ShowMessage = "Save“;没有在UI线程上运行。为了使RaisePropertyChanged工作,它必须工作,因此您需要插入另一个延续和任务来使用ShowMessage执行FromCurrentSynchronizationContext。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39171137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档