Я пытаюсь заставить RadBusyIndicator появляться, пока процесс завершается на бэкэнде. У меня есть кнопка, привязанная к команде:
Страница XAML
<telerik:RadBusyIndicator x:Name="BusyIndicator" IsBusy="{Binding IsProcessing, Mode=TwoWay}">
<!-- Form to fill -->
<Button Name="BtnDoSomething" Content="Do Something" Command="{Binding DoSomethingCommand}" />
</telerik:RadBusyIndicator>
ViewModel
public class SomethingViewModel
{
private readonly DoSomethingService _doSomethingService;
public SomethingViewModel()
{
_doSomethingService = new DoSomethingService();
CloseCuCommand = new Command(x => HandleCloseCuCommand());
}
private bool _isProcessing;
public bool IsProcessing
{
get { return _isProcessing; }
set
{
_isProcessing = value;
OnPropertyChanged(nameof(IsProcessing));
}
}
public ICommand DoSomethingCommand{ get; private set; }
private void HandleDoSomethingCommand()
{
IsProcessing = true;
_doSomethingService.LongProcess()
IsProcessing = false;
}
}
Как видите, у меня BusyIndicator привязан к логическому значению в ViewModel. Я подтвердил, что OnPropertyChanged подвергается удару, но на самом деле он не обновляет значение на странице XAML.
Насколько я понимаю, это связано с однопоточным характером WPF. Однако я не смог найти способ связать команду, которая связана, как это. Я попытался добавить логику многопоточности в CodeBehind, но все еще не могу обработать диспетчер на стороне команд.