2015-09-02 4 views
0

Моя страница в рамках кадра занимает время загрузки, что означает, что элементам управления требуется некоторое время, чтобы отображаться на странице в первый раз. Где в моем главном файле window.cs я должен установить IsBusy = true. Я понятия не имею, как использовать индикатор занятости. Когда я должен переключить его на true или false. пожалуйста, назовите меня, как мне его использовать? Заранее спасибо.Как использовать индикатор занятости в wpf

ответ

3

Как правило, вы должны установить индикатор занятости перед тем, как начать выполнять тяжелую обработку, которая зависит от вашего кода.

Как правило, перед тем, как вы создадите фоновый поток, чтобы выполнить нагрузку на работу, оставляя пользовательский интерфейс, чтобы сказать, что он занят в данный момент, и когда поток завершает работу, «unbusy» пользовательского интерфейса.

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); 
     } 
    } 

команд и команд Handler

//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; 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^