|
Обновление/перерисовка DataGrid
|
|||
---|---|---|---|
#18+
Все доброго времени суток! Как обновить/перерисовать DataGrid, привязанный к ObservableCollection<T> в MVVM? например: в методе ViewModel'и в цикле добавляются 100 записей в коллекцию. DataGrid обновиться после добавления всех записей, а хочется, чтоб после каждого добавления записи в коллекцию изменения тут же отображались в DataGrid'е. Пробовал привязать DataGrid к ICollectionView и после каждого добавления записи в коллекцию вызывать ICollectionView.Refresh() - не помогает. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 18:40 |
|
Обновление/перерисовка 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 |
|
Обновление/перерисовка DataGrid
|
|||
---|---|---|---|
#18+
LR, После каждого добавления поставил задержку: Код: c# 1. 2. 3. 4. 5.
все равно показывает только после добавления всех записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 19:23 |
|
Обновление/перерисовка DataGrid
|
|||
---|---|---|---|
#18+
Nicky_N, не, так не годится, так же "примораживается" UI-поток, цепляйтесь к таймеру (проще к System.Windows.Threading.DispatcherTimer) или же добавляйте не в UI-потоке ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 19:36 |
|
Обновление/перерисовка 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 |
|
Обновление/перерисовка DataGrid
|
|||
---|---|---|---|
#18+
LR, с таймером пошло отлично! спасибо!!! с потоками поиграть попробую... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2012, 19:49 |
|
Обновление/перерисовка DataGrid
|
|||
---|---|---|---|
#18+
Поигрался с фишкой .Net 4.0 - Task Код: c# 1. 2. 3. 4. 5.
Только вот беда: нельзя обновлять ObservableCollection<T>, к которому прикручен UI Control, из другого потока. Решение нашлось - AsyncObservableCollection<T> . Все получилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2012, 14:01 |
|
Обновление/перерисовка DataGrid
|
|||
---|---|---|---|
#18+
Nicky_NТолько вот беда: нельзя обновлять ObservableCollection<T>, к которому прикручен UI Control, из другого потока. не знаю какую задачу Вы решаете, но в обсуждаемом примере можно сделать и так Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
т.е. добавление - в UI-потоке, цикл с задержкой - в другом ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2012, 14:58 |
|
Обновление/перерисовка DataGrid
|
|||
---|---|---|---|
#18+
LR, 1) обновление коллекции из ViewModel. 2) головное приложение - WinForms, View - WPF UserControl, которое хостится в System.Windows.Forms.Integration.ElementHost, поэтому непонятно как добраться до Dispatcher. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2012, 15:16 |
|
Обновление/перерисовка DataGrid
|
|||
---|---|---|---|
#18+
Nicky_NView - WPF UserControl, которое хостится в System.Windows.Forms.Integration.ElementHost, поэтому непонятно как добраться до Dispatcher. а ElementHost.Invoke пробовали? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2012, 18:01 |
|
Обновление/перерисовка 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 |
|
Обновление/перерисовка DataGrid
|
|||
---|---|---|---|
#18+
Nicky_N, ну не знаю... тут Вам виднее как лучше... (я бы Integration.ElementHost вообще не использовал, помнится, там проблем предостаточно, утечки памяти и т.п., в чем необходимость скрещивать винформы и впф?) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2012, 18:26 |
|
Обновление/перерисовка DataGrid
|
|||
---|---|---|---|
#18+
LR, да я понимаю - как говорится, не от хорошей жизни))) дело в том, что проект изначально на WinForms, а хочется уже пробовать WPF, поэтому и приходится изголяться... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2012, 18:39 |
|
Обновление/перерисовка 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 |
|
|
start [/forum/topic.php?fid=21&msg=38086907&tid=1441545]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
140ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 330ms |
total: | 558ms |
0 / 0 |