2016-03-04 178 views
0

我有一個Customer類,實現INotifyPropertyChanged。在我的CustomerDetailsViewModel課程中,我有一個Customer類型的屬性。在XAML中,每個文本框都綁定到我的視圖模型公開的Customer的每個屬性。我使用TwoWay以及PropertyChanged作爲UpdateSourceTrigger如何清除WPF文本框而不更新其雙向綁定源?

現在我想要一個「清除」按鈕,它將清除所有文本框的內容。意圖是讓用戶使用另一個「添加」按鈕創建一個新的客戶。只有當用戶輸入正確的文本時,才能啓用「添加」按鈕。即不應該有任何驗證錯誤。

如何清除所有文本框而不更新當前顯示在GUI上的Customer實例的綁定屬性的值?

我的解決方案: 一種方法可能是創建一個Customer的新實例,並將所有屬性(如名稱,地址等)設置爲空字符串。但問題是,我創建新實例用戶的那一刻在GUI上看到錯誤模板,因爲驗證(如'空名稱不允許')失敗。

+0

您是否嘗試過將UpdateSourceTrigger設置爲lostFocus或從其文本框中刪除UpdateSourceTrigger屬性。 –

回答

0

您可以使用DataTrigger。事情是這樣的:

<DataTrigger Binding={Binding Text, ElementName=txtTextBox1} Value=""> 
0

據我理解這個問題,你應該做的事情是取消綁定客戶對象時使用清除命令,如。從綁定到界面的那一個創建一個新的客戶。 只顯示驗證錯誤。

編輯:你爲什麼要隱藏驗證錯誤,如果你想使用它們來強制用戶輸入正確的數據? 我認爲它實際上更加用戶友好,在嘗試保存之前給出要求。