我已經搜索了互聯網並且尚未找到解決方案。幫助我Stack-Overflow-Kenobi,你是我唯一的希望!Silverlight:ComboBox上的雙向綁定不會碰到BindingValidationError處理程序與null
所以我有這個Silverlight應用程序,對不對?我有一個綁定到不可爲空的數據庫字段的組合框,以便在初始化時填充所有可能的值。在這方面它工作得很好。
但是,當我SubmitChanges沒有選擇一個項目,沒有驗證錯誤拋出,所以我的BindingValidationError處理程序永遠不會被激活。現在我期望(並且有點需要)將null推入非空數據庫列時會引發錯誤。這樣用戶知道選擇一個項目。
當值不爲空時,它被推送到數據庫就好了。基本上,綁定工作正常:我只需要知道爲什麼沒有命中BindingValidationError處理程序。如果沒有選擇項目,則需要運行ToggleError。
foo()
{
Binding databinding = new Binding(this.Id);
databinding.Source = bindingObject;
databinding.BindsDirectlyToSource = true;
databinding.Mode = BindingMode.TwoWay;
databinding.ValidatesOnDataErrors = true;
databinding.ValidatesOnExceptions = true;
databinding.ValidatesOnNotifyDataErrors = true;
databinding.NotifyOnValidationError = true;
databinding.UpdateSourceTrigger = UpdateSourceTrigger.Default;
CmbBox.DisplayMemberPath = _DisplayMemberPath;
CmbBox.SelectedValuePath = _SelectedValuePath;
CmbBox.SetBinding(ComboBox.SelectedItemProperty, databinding);
CmbBox.BindingValidationError += (sender, e) => ToggleError(e.Action == ValidationErrorEventAction.Added ? true : false , e.Error.ErrorContent.ToString());
}
private void ToggleError(bool enableError, string errorMessage)
{
hasError = enableError;
if (hasError)
{
CmbBox.Foreground = new SolidColorBrush(Utilities.DarkRed);
Error.Visibility = Visibility.Visible;
this.errorMessage = errorMessage;
}
else
{
CmbBox.Foreground = new SolidColorBrush(Utilities.DarkGreen);
Error.Visibility = Visibility.Collapsed;
errorMessage = null;
}
}
預先感謝:)
卡梅倫