如何在 wpf 中使用忙碌指示器

Posted

技术标签:

【中文标题】如何在 wpf 中使用忙碌指示器【英文标题】:How to use busy indicator in wpf 【发布时间】:2015-11-28 05:01:58 【问题描述】:

我在框架内的页面需要一些时间才能加载,这意味着控件首次出现在页面上需要一些时间。我应该在我的主 window.cs 文件中的哪个位置设置 IsBusy = true。我不知道如何使用忙碌指示器。我应该何时将其切换为 true 或 false。请指导我应该如何使用它?提前致谢。

【问题讨论】:

【参考方案1】:

通常,您会在开始执行大量繁重处理之前设置繁忙指示器,这取决于您的代码。

它通常会在您生成后台线程以执行大量工作之前让 UI 说它现在很忙,当线程完成时“不忙” UI。

【讨论】:

【参考方案2】:

用忙碌指示符包裹你Xaml。假设您使用的是MVVM

  <xctk:BusyIndicator BusyContent="Binding BusyText" IsBusy="Binding IsBusy">
    <Grid>
       <!--Your controls and content here-->
    </Grid>
</xctk:BusyIndicator>

在你的viewmodel

    /// <summary>
    /// To handle the Busy Indicator's state to busy or not
    /// </summary>
    private bool _isBusy;
    public bool IsBusy
    
        get
        
            return _isBusy;
        
        set
        
            _isBusy = value;
            RaisePropertyChanged(() => IsBusy);
        
    

    private string _busyText;
    //Busy Text Content
    public string BusyText
    
        get  return _busyText; 
        set
        
            _busyText = value;
            RaisePropertyChanged(() => BusyText);
        
    

命令和命令处理程序

    //A Command action that can bind to a button
    private RelayCommand _myCommand;
    public RelayCommand MyCommand
    
        get
        
            return _myCommand??
                   (_myCommand= new RelayCommand(async () => await CommandHandler(), CanExecuteBoolean));
        
    

internal async Task CommandHandler()
    
       Isbusy = true;
       BusyText = "Loading Something...";
       Thread.Sleep(3000); // Do your operation over here
       Isbusy = false;
    

【讨论】:

以上是关于如何在 wpf 中使用忙碌指示器的主要内容,如果未能解决你的问题,请参考以下文章

如何在闪亮的应用程序中显示忙碌指示器?

Worklight 持续忙碌指示器

IBM Worklight - 如何设置忙碌指示器的样式

在 jquery mobile、phonegap/cordova 中添加一个活动指示器以显示应用程序何时忙碌

如何在 Android 中制作“忙碌”动画?

wpf busyindicator 没有出现