如何在wpf中使用busy指示符

时间:2015-09-02 15:34:47

标签: wpf wpftoolkit busyindicator

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

2 个答案:

答案 0 :(得分:3)

通常,您会在开始加载繁重的处理之前设置忙指示符,这取决于您的代码。

通常在你产生一个后台线程之前做一大堆工作,让UI暂时说它很忙,当线程完成然后“unbusy”UI。

答案 1 :(得分:0)

用繁忙的指示器包裹你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;
    }