我在WPF中有一個文本框,並將命令綁定到其LostFocus事件並在該命令中執行一些驗證。WPF中的事件和命令綁定
現在同樣的窗口,我有它的鍵綁定是Ctrl + S.
保存按鈕如果使文本框的一些變化,然後按Ctrl + S鍵,它不提高失去焦點的執行命令save事件在我的文本框中。
我知道這是設計。
但我想在保存命令之前執行那段代碼,我不能在保存過程中對該代碼進行硬編碼,我只想在焦點位於文本框中時執行它。
我在WPF中有一個文本框,並將命令綁定到其LostFocus事件並在該命令中執行一些驗證。WPF中的事件和命令綁定
現在同樣的窗口,我有它的鍵綁定是Ctrl + S.
保存按鈕如果使文本框的一些變化,然後按Ctrl + S鍵,它不提高失去焦點的執行命令save事件在我的文本框中。
我知道這是設計。
但我想在保存命令之前執行那段代碼,我不能在保存過程中對該代碼進行硬編碼,我只想在焦點位於文本框中時執行它。
您需要將驗證代碼分解到可由LostFocus和Save命令調用的單獨方法中。從Save中調用LostFocus是實現此邏輯的不好方法。
新方法可以返回一個布爾值來指示驗證是否成功。有更好的方法來進行不依賴於綁定LostFocus命令的驗證,請查看我的博客文章Taking data binding, validation and MVVM to the next level - part 1瞭解更多的想法。
偉大的文章,很有啓發。但有一個我的文本框包含電話號碼,因此一些基本的格式。當用戶在丟失焦點時驗證文本框時,我會執行此格式。根據你的文章,我需要更新源屬性,每次用戶進行一些更改。如果我這樣做,在每次更改時,我的構造函數都會被觸發並在文本框中格式化數據。 – MegaMind
您是否能夠運行驗證碼否則呢?如果是,那麼使它設置一個像isValidated = true的標誌。只有在標誌設置爲true時,才能在保存命令中運行保存代碼。 – ryadavilli
@ryadavilli這絕對會工作,但它似乎更像是一個黑客。有沒有真正的解決方案。 – MegaMind