Я в последнее время изучал MVVM, и после того, как я обнаружил Caliburn.Micro , все было довольно хорошо;Я все еще на начальных этапах обучения, но я верю, что у меня хорошее представление об основах MVVM.
Однако я сталкиваюсь с проблемами с WPF DataGrid
- и это в значительной степени те же проблемы , что и у меня с WinForms DataGridView
: как, черт возьми, вы справляетесь с CanUserAddRows=true
чистым добавлением элементов в сетку?
Я явно не хочу добавлять DataGrid
-специфичныевзломает мою ViewModel, так как он в идеале должен быть пригоден для других View
элементов управления.В то же время я хотел бы получить уведомление о добавлении нового элемента row , поэтому я могу сохранить его сразу.
Я связываюDataGrid
до BindableCollection<FooModel> FooItems
- с чистым дизайном MVVM, если я правильно понимаю вещи, я смогу обработать FooItems.CollectionChanged
и реагировать на события Add / Remove.Однако DataGrid
запускает событие Add, как только добавляется созданный по умолчанию элемент - это, очевидно, не правильное время для сохранения объекта!
После большого количества поиска в Googleи копаясь в StackOverflow, у меня складывается впечатление, что DataGrid
крайне тормозится при запуске событий Add / Remove.Люди, которые используют его с CanUserAddRows=true
, похоже, работают только с коллекциями в памяти, где люди, которые сохраняют данные, используют отдельные поля ввода + кнопки Команды для добавления новых элементов.
MyFooModel
реализует INotifyPropertyChanged
, но не IEditableObject
- насколько я могу судить, это не должно быть проблемой, так как IEO, похоже, связан со свойством edit / undo, в то время как моя проблема в том, когда происходит событие Add...
Итак, что вы делаете для обработки редактирования в сетке чисто ?