|
как присоединить DataGrig & коллекцию при сортировке?
|
|||
---|---|---|---|
#18+
Привет всем! Надеюсь, что мой вопрос будет полезен не только мне, но и всем... И так, имею: - MVVM - коллекция: Код: c# 1.
- DataGrid: Код: xml 1.
при этом Names это коллекция Теперь вопрос, как синхронизировать (EventTrigger EventName="Sorting") DataGrid и коллекцию? Заранее спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 06:36 |
|
как присоединить DataGrig & коллекцию при сортировке?
|
|||
---|---|---|---|
#18+
Света7415Привет всем! Надеюсь, что мой вопрос будет полезен не только мне, но и всем... И так, имею: - MVVM - коллекция: Код: c# 1.
- DataGrid: Код: xml 1.
при этом Names это коллекция Теперь вопрос, как синхронизировать (EventTrigger EventName="Sorting") DataGrid и коллекцию? Заранее спасибо в DataGrid сортировка работает через ICollectionView , для каждой коллекции, которая связывается с UI создается своя View, получить её можно 2 путями: А) создать самому и связать ItemsControl.ItemsSource с это View (в данным случае подходит класс ListCollectionView (он создается по умолчанию для Collection. Б) запросить его через метод CollectionViewSource.GetDefaultView(IEnumerable collection) В) если коллекция своя, можно указать явный View который ты хочешь. чтоб создавался для твоей коллекции, это можно сделать наследую в классе коллекции ICollectionViewFactory. Но есть 1 минус, требуется сборка WindowBase, которая относится к UI, а не к VM. чтоб переопределить сортировку, самый простой способ это создать своё вью на базе ListCollectionView (создавать свою View, довольно сложный и ресурсоёмкий процесс требующий глубоко понимания, как всё работает). В классе есть SortDefinitions свойство коллекция, у которой есть события CollectionChanged или что то подобное, оно там одно. Именно этим механизмом пользуется DataGrid для управления сортировки. Компаратор для сортировки создается внутри UI и работает через рефлексию ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 11:20 |
|
как присоединить DataGrig & коллекцию при сортировке?
|
|||
---|---|---|---|
#18+
Roman Mejtes, сори, спросони начудил fixed: - Компаратор для сортировки создается внутри View и работает через рефлексию - (создавать свою View с нуля, довольно сложный и ресурсоёмкий процесс требующий глубоко понимания, как всё работает) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 11:22 |
|
как присоединить DataGrig & коллекцию при сортировке?
|
|||
---|---|---|---|
#18+
Roman Mejtes, простите, не поняла.. я эту проблему решила, но через "пятую точку", если не говорить грубее: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
понимаю, что на маленьких данных это ОК, а на больших тупёжь((( ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 12:35 |
|
как присоединить DataGrig & коллекцию при сортировке?
|
|||
---|---|---|---|
#18+
Света7415Roman Mejtes, простите, не поняла.. я эту проблему решила, но через "пятую точку", если не говорить грубее: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
понимаю, что на маленьких данных это ОК, а на больших тупёжь((( я не очень понимаю в чем ваша проблема? DataGrid из коробочки поддерживает сортировку, в каком момент требуется обновить эту сортировку и каким образом? Для обновления сортировки, достаточно вызвать метод Код: c# 1. 2. 3. 4.
после Refresh порядок элементов (по строкам) в DataGrid изменится согласно параметрам сортировки в SortDefenitions, заголовки столбцов DataGrid поддерживают добавление и удаление из view.SortDefenitions нужных полей на уровне контрола и его шаблона. Но можно всё это задать и руками, при чем доступно это как из View, так и из ViewModel. CollectionViewSource.GetDefaultView(..) всегда будет возвращать один и тот же класс наследованный от ICollectionView, для заданной коллекции. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 12:45 |
|
как присоединить DataGrig & коллекцию при сортировке?
|
|||
---|---|---|---|
#18+
Roman Mejtes, Не совсем то((( Сортировка по умолчанию устраивает, нужно, чтоб после того, как пользователь кликнул по колонке изменилась и коллекция, из которой DataGrid получает ресурсы. Я совсем тупая? даже объяснить не могу ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 13:47 |
|
как присоединить DataGrig & коллекцию при сортировке?
|
|||
---|---|---|---|
#18+
Света7415Roman Mejtes, Не совсем то((( Сортировка по умолчанию устраивает, нужно, чтоб после того, как пользователь кликнул по колонке изменилась и коллекция, из которой DataGrid получает ресурсы. Я совсем тупая? даже объяснить не могу для того, чтоб получить результирующую коллекцию (сортированную так как она отображается в DataGrid) достаточно перечислять View, но нужно учитывать 1 момент, что при перечислении view, учитывает фильтр и еще в нём могут присутствовать элементы вставки. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2016, 14:14 |
|
|
start [/forum/topic.php?fid=21&fpage=10&tid=1440616]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
71ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 235ms |
total: | 408ms |
0 / 0 |