powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / заполнение datagrid в invoke
17 сообщений из 17, страница 1 из 1
заполнение datagrid в invoke
    #38366221
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В WinForms я в Invoke заполняю datagridview:
Код: c#
1.
2.
3.
var source = new BindingSource();
source.DataSource = list;
gvFiles.Invoke(new Action<BindingSource>((s) => gvFiles.DataSource = s), source);



Каким образом можно тоже самое проделать в WPF?

Код: c#
1.
gvFiles.Dispatcher.Invoke(new Action<BindingSource>((s) => gvFiles.ItemsSource = s), list);


Так нельзя, т.к. в datagrid будет показываться только первая строка
...
Рейтинг: 0 / 0
заполнение datagrid в invoke
    #38366269
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
другими словами, в WinForm есть BindingSource для инкапсуляции источника данных:
Код: c#
1.
2.
var source = new BindingSource();
source.DataSource = list;



что-то подобное есть в WPF?
...
Рейтинг: 0 / 0
заполнение datagrid в invoke
    #38366271
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Students,

в wpf нету bindingsource. он просто теперь встроен во все, что может биндится.

но я не понял, в чем у тебя трабла.
...
Рейтинг: 0 / 0
заполнение datagrid в invoke
    #38366275
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема в том, что в datagrid отображается только первая строчка, если через Invoke записывать туда list.
В Winforms то же самое, но если записать туда BindingSource, то будут отображаться все строчки
...
Рейтинг: 0 / 0
заполнение datagrid в invoke
    #38366288
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Students,

и?
согласно тому коду выше, ты чето врешь.
...
Рейтинг: 0 / 0
заполнение datagrid в invoke
    #38366314
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В WinForms:

показывается только первая строка в datagridview (хотя в datasource много записей):
Код: c#
1.
gvFiles.Invoke(new Action<List<string>>((s) => gvFiles.DataSource = s), list);



показываются все строки:
Код: c#
1.
2.
3.
var source = new BindingSource();
source.DataSource = list;
gvFiles.Invoke(new Action<BindingSource>((s) => gvFiles.DataSource = s), source);




В WPF:

показывается только первая строка в datagrid (хотя в itemssource много записей):
Код: c#
1.
gvFiles.Dispatcher.Invoke(new Action<List<string>>((s) => gvFiles.ItemsSource = s), list);



как сделать, чтобы показывались все строки???
Код: c#
1.
2.
3.
var source = ... // ???????

gvFiles.Invoke(new Action<BindingSource>((s) => gvFiles.ItemsSource = s), source);
...
Рейтинг: 0 / 0
заполнение datagrid в invoke
    #38366324
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё, разобрался.

Нужно было дописать:

Код: c#
1.
Dispatcher.Invoke(new Action(() => gvFiles.Items.Refresh()));
...
Рейтинг: 0 / 0
заполнение datagrid в invoke
    #38369567
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
заполнение datagrid в invoke
    #38369737
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelouchStudents,

зачем такой ужас?
http://msdn.microsoft.com/ru-ru/magazine/cc700358.aspx
http://lmgtfy.com/?q=wpf datagrid binding

Т.к. нужно использовать Invoke, когда из другого потока меняем datagrid
...
Рейтинг: 0 / 0
заполнение datagrid в invoke
    #38370507
Iber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что за жесть). в отдельном потоке запрашиваешь данные. отдаешь их в ui поток и уже там обновляешь коллекцию, которая сбайндена с гридом.
...
Рейтинг: 0 / 0
заполнение datagrid в invoke
    #38370705
Iber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
например таски, но лучше сразу начать изучать RX.

Код: c#
1.
2.
3.
4.
5.
6.
            var task = Task.Factory
                .StartNew(() =>
                    {
                        return new List<Person> { new Person { Name = "Jhon", Age = 25 } };
                    })
                .ContinueWith(x => { PersonDataGrid.ItemsSource = x.Result; }, TaskScheduler.FromCurrentSynchronizationContext());



Не забываем указать Sheduler, иначе данные вернутся не UI потоке.
...
Рейтинг: 0 / 0
заполнение datagrid в invoke
    #38371161
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, когда я использую FileSystemWatcher
нужно обновлять изменение файлов в реальном времени, пусть и в другом потоке
...
Рейтинг: 0 / 0
заполнение datagrid в invoke
    #38371436
Iber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а что мешает в комплитеде этого потока данные обработать?
...
Рейтинг: 0 / 0
заполнение datagrid в invoke
    #38371499
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Iberнапример таски, но лучше сразу начать изучать RX.Чем лучше?
...
Рейтинг: 0 / 0
заполнение datagrid в invoke
    #38371510
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StudentsНет, когда я использую FileSystemWatcher
нужно обновлять изменение файлов в реальном времени, пусть и в другом потоке

это как?
...
Рейтинг: 0 / 0
заполнение datagrid в invoke
    #38371511
Students
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Iberа что мешает в комплитеде этого потока данные обработать?

не туда ткнул. Теперь правильно.
Не совсем понял каким образом и где обрабатывать тога
...
Рейтинг: 0 / 0
заполнение datagrid в invoke
    #38371611
SerP1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КIberнапример таски, но лучше сразу начать изучать RX.Чем лучше?
+1 Чем?
По количеству буков и по синтаксису - примерно одинаково. Ошибки проще обрабатывать - не уверен.
Хотелось бы услышать обоснованное мнение.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / заполнение datagrid в invoke
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]