У меня есть DataForm на странице Silverlight 4. Я связываю это с Представлением на классе ниже. Я могу добавлять, удалять, редактировать и перемещаться вперед / назад по записям, используя элементы управления, встроенные в DataForm. Но как только я удаляю комментарий для Filter или SortDescription, каждый раз, когда я нажимаю кнопку «Добавить +», я получаю страшное «не могу изменить валюту, если у элемента есть ошибки проверки или он редактируется, а AutoCommit имеет значение false». Я застрял на этом часами и понятия не имею.
public class TestData {
OperationsDataContext context;
ICollectionView view;
public ICollectionView View { get { return view; } }
public IEditableCollectionView EditableView { get { return ((IEditableCollectionView)view); } }
public TestData() {
context = new OperationsDataContext();
context.Locations.Add(new Location { LocationId = 1, LocationName = "Home", CreatorUserId = 1 });
context.Locations.Add(new Location { LocationId = 2, LocationName = "Work", CreatorUserId = 1 });
context.Locations.Add(new Location { LocationId = 3, LocationName = "Office", CreatorUserId = 1 });
view = ((ICollectionViewFactory)context.Locations).CreateView();
// View.Filter = (o) => true;
// View.SortDescriptions.Add(new SortDescription("LocationName", ListSortDirection.Ascending));
}
}
Я попытался добавить данные вручную, используя код, а не DataForm, и он работает просто отлично, даже если указаны и фильтр, и сортировка.
TestData testData = new TestData();
Location item = testData.EditableView.AddNew() as Location;
testData.EditableView.CommitNew();
Почему это работает из кода, а не через DataForm? И почему DataForm работает, когда не указан фильтр, но не работает, если указан неоперативный фильтр, который всегда возвращает true?