2011-09-11 67 views
0

我在視圖中有兩個按鈕,一個用於錄製一些聲音,一個用於在錄製完成時播放錄音。錄製完成後,我將recording_done的VM屬性設置爲1,用於CanPlay(),該屬性啓用播放按鈕。到目前爲止一切正常。DispatcherTimer阻止UI被更新?

我加了一個定時器,在兩秒鐘後自動停止錄音。經過一些試驗和錯誤之後,我用DispatcherTimer解決了問題。我的問題是UI(播放按鈕)不會啓用,直到我點擊WPF窗口(窗口的某處/任何地方)。很明顯,調試信息表明recording_done設置爲1.這應該觸發UI更新,但它不會,直到我點擊窗口。

我試過兩種方法,1.錄製按鈕綁定到ViewModel中的命令,我啓動計時器並停止計時器。 2.將錄製按鈕處理程序和計時器代碼放在視圖的代碼中。類似的問題。

有什麼建議嗎?這是一個線程/ UI更新問題?謝謝。

回答

0

如果您的播放按鈕被綁定到一個命令,該命令的CanExecute()被間接結合recording_done屬性或字段,它不會更新,直到在ICommandCanExecuteChanged事件引發,或者直到WPF決定重新查詢命令。我懷疑這是問題 - 你需要ICommand提高CanExecuteChanged

+0

我在定時器事件處理程序中添加了RaiseCanExecuteChanged()。是的,它的工作原理!謝謝! –