Есть предположение почему не блокируется команда? начальное состояние SelectedItem: null
var canExecute = this.WhenAnyValue(x => x.SelectedItem)
.Select(x => x is not null)
.ObserveOn(RxApp.MainThreadScheduler);
canExecute.Subscribe(async x => await dialogService.ShowMessageBox("Удаление.", new MarkupString($"Удалить <b>{x}</b>?")));
GetSystemList = ReactiveCommand.CreateFromTask(systemManager.GetList);
Delete = ReactiveCommand.CreateFromTask(DeleteItem, canExecute);
РЕШЕНО!
Вообщем, трудности перевода(гоу на русский?).
Явный вызов команд не проверяет возможность. Только ui-фрэймворк так умеет.
Поправка. InvokeCommand также учитывает canexecute.