|
|
|
Обновление/перерисовка DataGrid
|
|||
|---|---|---|---|
|
#18+
Все доброго времени суток! Как обновить/перерисовать DataGrid, привязанный к ObservableCollection<T> в MVVM? например: в методе ViewModel'и в цикле добавляются 100 записей в коллекцию. DataGrid обновиться после добавления всех записей, а хочется, чтоб после каждого добавления записи в коллекцию изменения тут же отображались в DataGrid'е. Пробовал привязать DataGrid к ICollectionView и после каждого добавления записи в коллекцию вызывать ICollectionView.Refresh() - не помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2012, 18:40:28 |
|
||
|
Обновление/перерисовка DataGrid
|
|||
|---|---|---|---|
|
#18+
Nicky_Nв цикле добавляются 100 записей в коллекцию. DataGrid обновиться после добавления всех записей, а хочется, чтоб после каждого добавления записи в коллекцию изменения тут же отображались в DataGrid'е ))) изменения отображаются, просто отображение - дело небыстрое... попробуйте добавлять помедленней timer.Interval = TimeSpan.FromMilliseconds(100); timer.Tick += (s, e) => { collection.Add(...); }; timer.Start(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2012, 19:13:51 |
|
||
|
Обновление/перерисовка DataGrid
|
|||
|---|---|---|---|
|
#18+
LR, После каждого добавления поставил задержку: Код: c# 1. 2. 3. 4. 5. все равно показывает только после добавления всех записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2012, 19:23:46 |
|
||
|
Обновление/перерисовка DataGrid
|
|||
|---|---|---|---|
|
#18+
Nicky_N, не, так не годится, так же "примораживается" UI-поток, цепляйтесь к таймеру (проще к System.Windows.Threading.DispatcherTimer) или же добавляйте не в UI-потоке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2012, 19:36:57 |
|
||
|
Обновление/перерисовка DataGrid
|
|||
|---|---|---|---|
|
#18+
вот, работающий код (с успевающей отрисовкой) Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2012, 19:45:32 |
|
||
|
Обновление/перерисовка DataGrid
|
|||
|---|---|---|---|
|
#18+
LR, с таймером пошло отлично! спасибо!!! с потоками поиграть попробую... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2012, 19:49:17 |
|
||
|
Обновление/перерисовка DataGrid
|
|||
|---|---|---|---|
|
#18+
Поигрался с фишкой .Net 4.0 - Task Код: c# 1. 2. 3. 4. 5. Только вот беда: нельзя обновлять ObservableCollection<T>, к которому прикручен UI Control, из другого потока. Решение нашлось - AsyncObservableCollection<T> . Все получилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 14:01:41 |
|
||
|
Обновление/перерисовка DataGrid
|
|||
|---|---|---|---|
|
#18+
Nicky_NТолько вот беда: нельзя обновлять ObservableCollection<T>, к которому прикручен UI Control, из другого потока. не знаю какую задачу Вы решаете, но в обсуждаемом примере можно сделать и так Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. т.е. добавление - в UI-потоке, цикл с задержкой - в другом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 14:58:46 |
|
||
|
Обновление/перерисовка DataGrid
|
|||
|---|---|---|---|
|
#18+
LR, 1) обновление коллекции из ViewModel. 2) головное приложение - WinForms, View - WPF UserControl, которое хостится в System.Windows.Forms.Integration.ElementHost, поэтому непонятно как добраться до Dispatcher. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 15:16:37 |
|
||
|
Обновление/перерисовка DataGrid
|
|||
|---|---|---|---|
|
#18+
Nicky_NView - WPF UserControl, которое хостится в System.Windows.Forms.Integration.ElementHost, поэтому непонятно как добраться до Dispatcher. а ElementHost.Invoke пробовали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 18:01:35 |
|
||
|
Обновление/перерисовка DataGrid
|
|||
|---|---|---|---|
|
#18+
LR, загружаю так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. В констуркторе DesReportViewModel создается еще одна ViewModel, которая и обновляет коллекцию. Как в этой ViewModel добраться до ElementHost ? передавать с помощью конструкторов DesReportViewModel(ElementHost), ViewModel(ElementHost)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 18:15:58 |
|
||
|
Обновление/перерисовка DataGrid
|
|||
|---|---|---|---|
|
#18+
Nicky_N, ну не знаю... тут Вам виднее как лучше... (я бы Integration.ElementHost вообще не использовал, помнится, там проблем предостаточно, утечки памяти и т.п., в чем необходимость скрещивать винформы и впф?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 18:26:56 |
|
||
|
Обновление/перерисовка DataGrid
|
|||
|---|---|---|---|
|
#18+
LR, да я понимаю - как говорится, не от хорошей жизни))) дело в том, что проект изначально на WinForms, а хочется уже пробовать WPF, поэтому и приходится изголяться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 18:39:23 |
|
||
|
Обновление/перерисовка DataGrid
|
|||
|---|---|---|---|
|
#18+
Нашел еще одно решение, без использования AsyncObservableCollection<T> - добавить статический класс: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. в конструктор View: Код: c# 1. 2. 3. 4. доавление элементов в коллекцию из ViewModel: Код: c# 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2012, 12:40:01 |
|
||
|
|

start [/forum/topic.php?fid=21&msg=38085764&tid=1441545]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 223ms |
| total: | 411ms |

| 0 / 0 |
