我有一个RelayCommand,绑定到AppBarButton,如下:
Command="{Binding NextCommand, UpdateSourceTrigger=PropertyChanged}"
命令的CanExecute属性只是一个简单的空检查。
private bool CanExecuteNextCommand() => !(this.SelectedItem == null);
但是,如果RaiseCanExecuteChanged被快速多次调用(通过Trigger),那么这里:
CanExecuteChanged?.Invoke(this, EventArgs.Empty);
我得到以下异常:
"错误HRESULT E_FAIL已从调用COM组件返回。"
如果从视图中删除Command属性绑定,则可以正常工作。
我甚至尝试在触发器上升级CanExecuteChangeds之前添加一个Task.Delay(200),但是我得到了相同的异常。
有没有人在UWP中遇到过类似的事情?
答案 0 :(得分:0)
我有相同的情况,即将调用CanExecuteChanged的命令与屏幕上的当前视图不在同一视图上。
作为解决方案:我只是把CanExecuteChanged?.Invoke(this,EventArgs.Empty);尝试使用COMException的空catch块:
catch(System.Runtime.InteropServices.COMException ex) { }