我在实现一个显示忙碌指示器的控件时遇到了一些问题,以下是情景:我有一个简单的视图,其中包含一个忙碌指示器和一个文本块,它们绑定到一个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;
}
现在发生了一些不同的事情,繁忙指示器加载得很好,但是当计算时间太短时,繁忙指示器不会显示,并且在调用CallMe()方法和文本出现在屏幕上之间存在小延迟。这是我的问题,我希望在繁忙指示器隐藏之前计算Text属性(并在屏幕上显示)。 有人知道一个好的方法来做到这一点吗?或者有任何建议我可以遵循吗?