沒有響應我,有一個有效性規則應用到它的文本框:WPF文本框綁定時有效性規則被解僱
<TextBox Style="{StaticResource StandardTextBox}"
Grid.Column="1" Grid.Row="4"
IsReadOnly="{Binding SaveModeText}"
MaxLength="50">
<TextBox.Text>
<Binding Path="Individual.SurName"
UpdateSourceTrigger="PropertyChanged"
ValidatesOnDataErrors="True"
ValidatesOnExceptions="True"
NotifyOnValidationError="True">
<Binding.ValidationRules>
<valid:RequiredTextBoxValidationRule
ErrorMessage="Please enter a last name" />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
頁面加載後的文本框中包含基於其結合正確的值。如果我從文本框中刪除該值,則ValidationRule將正確觸發,並按預期看到錯誤消息。我的應用程序包含一個「Discard Changes」按鈕,用於重載DataContext。希望它會重置所有的綁定,並且這個文本框會再次顯示原始值。出於某種原因,頁面上沒有與它們關聯的ValidationRule的所有其他值都會得到正確的重置,但是此文本框不會。
如果我從XAML中刪除了ValidationRule,該值將正確重置。如果我通過IDataErrorInfo處理驗證,驗證會正確觸發並且值正確重置。因爲我在整個應用程序中都使用了ValidationRules,所以我想知道是否有人遇到過這個問題並解決了它。此時,如果可能的話,我寧願堅持實施的ValidationRules,而不是將所有內容切換到IDataErrorInfo。
我相信默認情況下這個模式是TwoWay。我通過添加模式屬性來測試它,但它沒有任何區別。 – Filosopher 2010-11-16 19:51:05
我相信會發生這種情況,因爲ValidationRule在更新源屬性之前觸發,並且失敗時源屬性永遠不會更新。反過來,當數據刷新時,INotifyPropertyChanged不會爲有問題的屬性觸發。我嘗試將ValidationStep更改爲UpdatedValue,但隨後發現ValidationRule在其他驗證後觸發,這是我不想要的。 – Filosopher 2010-11-29 22:47:17