2013-10-22 40 views
0

我已經從文本框中派生出來並引入了帶有日曆和時間選擇器的彈出窗口,這導致了一個完美工作的日期時間選擇器。現在,我有一個要求,如果我們需要在日期時間選擇器中顯示無效文本(日期時間除外),那麼我們應該只能在加載時執行此操作,例如,如果數據庫中有無效的內容,我們應該能夠顯示它。WPF Databound文本框顯示無效數據,但不接受無效數據

但是,如果用戶試圖輸入一個無效值,他應該被限制這樣做。

我們該如何實現這一點,因爲我已經將文本框的文本屬性綁定到視圖模型的屬性。另外我將處理textchanged事件。一旦數據

另外我也可以,取消操作。

我想過使用一個標誌,但是使用OK/Cancel會讓我陷入困境,設置/重新設置標誌!

或者將綁定模式幫助嗎?

感謝任何幫助。提前致謝。

回答

1

你可以改變你的Binding.UpdateSourceTrigger價值LostFocus,使您的數據綁定文本屬性將只能看到變化的時候,用戶點擊OKButton。您應該能夠以這種方式來「拒絕」該財產的價值來電:

public string Text 
{ 
    get { return text; } 
    set 
    { 
     DateTime date; 
     if (!DateTime.TryParse(value, out date)) // Use whatever condition you like 
     { 
      text = value; 
     } 
     else text = string.Empty; 
    } 
} 

這也從UI控件作爲Focus明確無效的值丟失。但是,如果使用LostFocus不適合您,也可以將您的Binding.UpdateSourceTrigger值更改爲Explicit,並手動調用UpdateSource方法更新Binding。請查看MSDN上的Binding.UpdateSourceTrigger Property頁面瞭解更多信息。

+0

我會試試這個,並讓你張貼!謝謝你的幫助 ! – Sandepku