|
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&msg=39629148&tid=1440427]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
183ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 240ms |
total: | 519ms |
0 / 0 |