powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как правильно объединить коллекции и вывести их в datagrid?
5 сообщений из 5, страница 1 из 1
Как правильно объединить коллекции и вывести их в datagrid?
    #38903261
KotVasiliy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть два класса на основе интерфейсов:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
interface IAggr
{
     int Volume { get; set; }
     double Price { get; set; }
}
interface IOrder : IAggr
{
     long Id { get; }
}


И две коллекции, данные получаю из внешней программы, обрабатываются в своих потоках.
Каждый элемент может, быть добавлен, изменен или удалён, изменений много!
На их основе нужно сгруппировать новую коллекцию:
Код: 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.
public class Build : INotifyPropertyChanged
{
     public event PropertyChangedEventHandler PropertyChanged;

     private IAggr _Aggr;
     private IEnumerable<IOrder> _Orders;

     public Build(IAggr Aggr, IEnumerable<IOrder> Orders)
     {
          _Aggr = Aggr;
          _Orders = Orders;
     }

     public int Volume { get { return _Aggr.Volume; } }
     public double Price { get { return _Aggr.Price; } }
     public int Count { get { return _Orders.Count(); } }
     public int Open { get { return _Orders.Sum(Item => Item.Volume); } }

     private void OnPropertyChanged(string Property)
     {
          if (PropertyChanged != null)
               PropertyChanged(this, new PropertyChangedEventArgs(Property));
     }
}


И отправить в UI, так как с платформой ещё не определился пока использую DataGridView
Для тестов использую простую группировку:
Код: c#
1.
2.
3.
4.
var Orders = new List<Order> { new Order(1, 11.0d, 1), new Order(2, 11.0d, 3), new Order(3, 12.0d, 1) };
var Aggrs = new List<Aggr> { new Aggr(10.0d, 1), new Aggr(11.0d, 5), new Aggr(12.0d, 3), new Aggr(13.0d, 4) };

BuildGridView.DataSource = new BindingList<Build>((from aggr in Aggrs join order in Orders on aggr.Price equals order.Price into orders select new Build(aggr, orders)).ToList());


Как правильно реализовать такую задачу, есть мысль что передёргивать постоянно DataSource вообще не вариант. А добиться нужно что бы все изменения в коллекциях и их элементах отображались в UI.
Спасибо.
...
Рейтинг: 0 / 0
Как правильно объединить коллекции и вывести их в datagrid?
    #38903271
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KotVasiliyА добиться нужно что бы все изменения в коллекциях и их элементах отображались в UI.
1. В Orders и Aggr также заимплементить INPC.
2. В модели коллекцию Orders хранить в ObservableCollection<T>.
3. Биндить к WPF-ному DataGrid.
...
Рейтинг: 0 / 0
Как правильно объединить коллекции и вывести их в datagrid?
    #38903710
KotVasiliy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я правильно понял, связать коллекции не получится, нужно самому отслеживать всё изменения в них и добавлять в общую?
...
Рейтинг: 0 / 0
Как правильно объединить коллекции и вывести их в datagrid?
    #38903729
Ilya81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KotVasiliyя правильно понял, связать коллекции не получится, нужно самому отслеживать всё изменения в них и добавлять в общую?
Да, проще всего это делать, подписавшись на событие CollectionChanged обоих коллекций. Здесь пример, как этим событием сами пользуются товарищи из Microsoft.

Вообще, я б поместил раздельные коллекции в model, а общую коллекцию - во view model.
...
Рейтинг: 0 / 0
Как правильно объединить коллекции и вывести их в datagrid?
    #38903747
KotVasiliy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, буду пробовать
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как правильно объединить коллекции и вывести их в datagrid?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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