WPF RadBusyIndicator с использованием шаблона команды MVVM не запускается - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь заставить 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, но все еще не могу обработать диспетчер на стороне команд.

1 Ответ

0 голосов
/ 14 сентября 2018

Установите IsProcessing с помощью BeginInvoke метода, где вам нужно, потому что они находятся в другом потоке.

Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
 new Action(() =>
 {
 IsProcessing= true;
 })
 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...