2012-10-22 71 views
1
在按鈕

我已經看到我有使用到幾個用戶的一個問題雙擊。避免在Silverlight按鈕MVVM第二次點擊

我必須綁定到推出許多動作命令幾個按鈕。

例如有兩個通過一個介體在它們之間進行通信的窗口,以便當我點擊「關閉其他窗口」,結合的命令發送一個「CloseTheOtherWindowMessage」。問題是當用戶進行雙擊時,它會嘗試第二次關閉該窗口,並且如預期的那樣,它會崩潰。

我試着將窗口BusyIndi​​cator設置爲IsBusy,當我按下按鈕但我的手指比MVVM快,它仍然讓我雙擊它開始顯示BusyIndi​​cator之前。

我發現了很多如何在MVVM中使用interaction.Behaviors來承認雙擊的例子,但我只想相反。有沒有任何示例或其他良好的解決方案?

回答

1
  1. 爲什麼當它崩潰時「按預期」?崩潰永遠不應該「如預期」。

  2. 你的手指不應該是「比MVVM更快」。分派器線程始終按照確定性和順序進行操作。你使用多線程方法嗎?

  3. 在該命令的Execute方法或處理程序中,提高它的CanExecuteChanged事件,綁定引擎將立即調用CanExecute(...)。使其成爲第二次返回false的方法。也許用一個定時器,或者更好的是,你可以在邏輯上您的視圖模型狀態單獨確定該操作是不可能的,現在(即因爲IsOtherStuffAvailable目前false)。

+0

1.這是「按預期」,因爲當第二個「關閉」到達時,窗口已經關閉。 2.我和你一樣驚訝。在事實上,如果我設置斷點它工作良好(BusyIndi​​cator控件開始,我不能按一下按鈕第二次)。 3.這是我唯一的選擇,但我不想改變所有我的應用程序按鈕與這個問題(這是一個巨大的應用程序,我正在尋找更一般的東西,如果它存在)。 感謝您的回答! – zapico