Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
WPF: CollectionViewSource.GetDefaultView() в другом потоке
|
|||
|---|---|---|---|
|
#18+
Просто оставлю здесь (крик души) CollectionViewSource.GetDefaultView() для одной и той же коллекции возвращает другой экземпляр View, если вызывать не в потоке пользовательского интерфейса. Блин, нафига такие грабли?... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 12:29 |
|
||
|
WPF: CollectionViewSource.GetDefaultView() в другом потоке
|
|||
|---|---|---|---|
|
#18+
Shocker.ProПросто оставлю здесь (крик души) CollectionViewSource.GetDefaultView() для одной и той же коллекции возвращает другой экземпляр View, если вызывать не в потоке пользовательского интерфейса. Блин, нафига такие грабли?... я уже не 1 раз об этом писали. Получайте представление через Dispatcher.Invoke, диспатчер всегда выполняется в основном потоке :) а в целом, я обычно просто создаю свое представление и не использую DefaultView. Так как 1 коллекция может отображаться более чем 1 контроле, а если использовать 1 представление, то текущий элемент и много чего еще будет синхронизироваться между элементами управления проще просто var view = new ListCollectionView(source); и все довольны. разница только в том, что ListCollectionView принимает IList, а не IEnumerable ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 13:43 |
|
||
|
WPF: CollectionViewSource.GetDefaultView() в другом потоке
|
|||
|---|---|---|---|
|
#18+
решил для себя вместо CollectionViewSource использовать просто еще дополнительный список объектов с linq-фильтром после того, как CollectionViewSource каким-то образом начинает генерить те же самые объекты, только с дригим хэшкодом, после чего UI отваливается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 13:47 |
|
||
|
WPF: CollectionViewSource.GetDefaultView() в другом потоке
|
|||
|---|---|---|---|
|
#18+
Roman MejtesПолучайте представление через Dispatcher.Invoke, диспатчер всегда выполняется в основном потоке :)Ну когда разобрался, то методы решения понятны ) Roman Mejtesvar view = new ListCollectionView(source); и все довольны.в смысле, ты его создаешь в VM и потом биндишься к нему из ItemsSource? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 13:52 |
|
||
|
WPF: CollectionViewSource.GetDefaultView() в другом потоке
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, совершенно верно в ItemsControl при биндинге идет проверка, если переданная коллекция уже является ICollectionView, то он использует именно её, если коллекция не наследует этот интерфейс вызывается CollectionViewSource.GetDefaultView() и используется представление по умолчанию. Принципов MVVM это не нарушает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 14:00 |
|
||
|
WPF: CollectionViewSource.GetDefaultView() в другом потоке
|
|||
|---|---|---|---|
|
#18+
Ок, хороший вариант, воспользуюсь, спасибо ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 14:02 |
|
||
|
WPF: CollectionViewSource.GetDefaultView() в другом потоке
|
|||
|---|---|---|---|
|
#18+
Shocker.ProОк, хороший вариант, воспользуюсь, спасибо )Тут, правда, другой бок вылез - ListCollectionView нетипизированный, так что для доступа к самой коллекции из VM приходится либо приводить явно, либо сохранять в локальном поле. Но все равно так удобнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 14:08 |
|
||
|
WPF: CollectionViewSource.GetDefaultView() в другом потоке
|
|||
|---|---|---|---|
|
#18+
А началось-то все с того, что мне понадобилось присвоить Код: c# 1. Вопрос, какого фига просто нельзя представление сортировать с помощью дефолтного компаратора - тогда достаточно было бы просто в разметке указать один флаг и спокойно реализовывать IComparable для элементов коллекции. Хотя, может я просто не смог разобраться, как это включить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 14:15 |
|
||
|
WPF: CollectionViewSource.GetDefaultView() в другом потоке
|
|||
|---|---|---|---|
|
#18+
Shocker.ProRoman Mejtesvar view = new ListCollectionView(source); и все довольны.в смысле, ты его создаешь в VM и потом биндишься к нему из ItemsSource?Забыл отписаться тогда - этот вариант тоже не прокатил. Если ListCollectionView создается не в UI-потоке, то потом UI-поток его пользовать не может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2018, 18:26 |
|
||
|
|

start [/forum/topic.php?fid=21&fpage=6&tid=1440427]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 11ms |
| total: | 138ms |

| 0 / 0 |
