У меня возникли некоторые проблемы с реализацией элемента управления, который показывает индикатор занятости, вот сценарий: у меня есть простое представление с индикатором занятости и TextBlock, это привязка к ViewModel (что-то вроде следующего).
public class ViewModel
{
private bool _isbusy;
public bool IsBusy
{
get { return _isbusy; }
set
{
_isbusy=value;
OnPropertyChanged("IsBusy");
}
}
private string _text;
public string Text
{
get { return _text; }
set
{
_text = value;
OnPropertyChanged("Text");
}
}
public void CallMe()
{
IsBusy = true;
Text = Static.PerformCalculation();
IsBusy = false;
}
}
Пока все довольно просто, нет ??Проблема в том, когда у меня есть метод, как CallMe ().Я должен показать и скрыть индикатор занятости, пока выполняются вычисления, я думаю, что причина была в том, что вычисления и уведомления свойства IsBusy выполнялись в одном потоке, поэтому я получил что-то вроде этого:
public void CallMe()
{
IsBusy = true;
Static.PerformCalculationAsync(CalculationCallback);
}
private void CalculationCallback(string result)
{
Text = result;
IsBusy = false;
}
Теперь происходит что-то другое, индикатор занятости загружается нормально, но когда вычисление слишком короткое, BusyIndicator не отображается, и между вызываемым методом CallMe () и текстом на экране появляется небольшая задержка. Это моя проблема, я хочу, чтобы свойство Text вычислялось (и показывалось на экране) до того, как BusyIndicator будет скрыт.
Кто-нибудь знает хороший способ сделать этоили есть какой-нибудь совет, которому я могу следовать ??