Я пытаюсь отобразить простой индикатор выполнения во время загрузки службы. Я не могу на всю жизнь понять, почему это не выполняется немедленно.
Вид:
<ProgressBar x:Name="ProgressBar"
IsIndeterminate="True"
Visibility="{Binding IsLoading, Mode=OneWay, Converter={StaticResource BoolToVisiblityConverter}}" />
Просмотр модели:
private Boolean _isLoading;
public Boolean IsLoading
{
get { return _isLoading; }
set
{
Set(ref _isLoading, value);
}
}
public SignInViewModel(INavigationService navigationService)
{
IsLoading = false;
_navigationService = navigationService;
Username = "";
SignInCommand = new RelayCommand( SignIn, CanSignIn);
}
private async void SignIn()
{
// DispatcherHelper.CheckBeginInvokeOnUI(() =>
// {
IsLoading = true;
RaisePropertyChanged("IsLoading");
// });
var response = await OrchestratorContext.Instance.SignInWithPassword(_username, _password);
if (response.IsSuccessful)
{
// _navigationService.NavigateTo("LandingPage");
}
}
Индикатор выполнения не начинает загружаться до тех пор, пока функция входа не будет завершена. Я пробовал использовать диспетчер, а также пытался поднять свойство, измененное после установки. Какие-либо предложения?
Task.Run
вместоTask.Factory.StartNew
сasync-await
. 31.07.2015SignInWithPassword
работал в потоке пользовательского интерфейса, блокируя любые обновления пользовательского интерфейса. Отображает ли этот метод какой-либо пользовательский интерфейс? Пожалуйста, опубликуйте соответствующий код. Кстати,RaisePropertyChanged
должен вызываться установщиком свойства, а не кодом, который устанавливает свойство 31.07.2015