Как немедленно проверить вновь вставленную строку в сетке данных Silverlight 3?
У меня есть библиотека инструментов Silverlight 3 с пользовательским элементом управления DataGrid. Эта сетка не имеет прямого доступа к типам объектов WCF RIA Services, поэтому я использую отражение, чтобы добавить новый элемент, когда пользователь нажимает на сетку, когда она пуста:
private void InsertEmptyRecord()
{
if (this._dataGrid.ItemsSource == null)
return;
Type[] typeParameters = this._dataGrid.ItemsSource.GetType().GetGenericArguments();
if (typeParameters.Count() > 0)
{
Type itemType = typeParameters[0];
object newItem = System.Activator.CreateInstance(itemType);
Type sourceType = typeof(System.Windows.Ria.EntityCollection<>);
Type genericType = sourceType.MakeGenericType(itemType);
System.Reflection.MethodInfo addMethod = genericType.GetMethod("Add");
addMethod.Invoke(this._dataGrid.ItemsSource, new object[] { newItem });
// == Validate data here ==
}
}
Это работает, но мне нужно также проверить после добавления нового элемента. Есть два способа сделать это:
Заставьте пользователя войти в режим редактирования для первой ячейки новой строки в сетке. (Это приведет к принудительной проверке, если они щелкнут где-нибудь еще на странице.)Принудительная проверка запускается сразу после добавления новой строки (или когда сетка теряет фокус).Я не смог заставить ни одного из них работать. Пробовал это, но он только выбирает строку, не заставляет проверки запускаться:
this._dataGrid.SelectedItem = newItem;
System.ComponentModel.IEditableObject editableItem = newItem as System.ComponentModel.IEditableObject;
if (editableItem != null)
editableItem.BeginEdit();
Какие-либо предложения?