Mvvm Dispatchermer是否阻止更新UI?

Mvvm Dispatchermer是否阻止更新UI?,mvvm,timer,Mvvm,Timer,我在视图中有两个按钮,一个用于录制声音,一个在录制完成后播放录制。录制完成后,我将recording_done的VM属性设置为1,用于启用播放按钮的CanPlay()。到目前为止一切正常 我添加了一个计时器,在两秒钟后自动停止录音。经过一些尝试和错误,我与一位调度员达成了协议。我的问题是UI(播放按钮)在我单击WPF窗口(窗口上的某处/任何地方)之前都无法启用。很明显,debug消息说录制_done设置为1。这应该会触发UI更新,但它不会,直到我单击windows 我试了两种方法,1。录制按钮绑

我在视图中有两个按钮,一个用于录制声音,一个在录制完成后播放录制。录制完成后,我将recording_done的VM属性设置为1,用于启用播放按钮的CanPlay()。到目前为止一切正常

我添加了一个计时器,在两秒钟后自动停止录音。经过一些尝试和错误,我与一位调度员达成了协议。我的问题是UI(播放按钮)在我单击WPF窗口(窗口上的某处/任何地方)之前都无法启用。很明显,debug消息说录制_done设置为1。这应该会触发UI更新,但它不会,直到我单击windows

我试了两种方法,1。录制按钮绑定到ViewModel中的命令,在那里我启动计时器并停止计时器。2.将录制按钮处理程序和计时器代码放在视图的代码后面。类似的问题


有什么建议吗?这是线程/UI更新问题吗?谢谢

如果播放按钮绑定到某个命令,并且该命令的
CanExecute()
间接绑定到
recording\u done
属性或字段,则在引发
ICommand
上的
CanExecuteChanged
事件或WPF决定重新查询这些命令之前,该按钮不会更新。我怀疑这就是问题所在-您需要将
ICommand
raise
canexecutechange

我在计时器事件处理程序中添加了raisecancecutechanged()。是的,它是有效的!谢谢