• Нужен ли INotifyCollectionChanged для коллекций если я его не использую?

    @rFczZZ Автор вопроса
    Хорошо, провел тест:
    1. на изменения в IEnumerable ItemsControl не реагирует, ожидаемо.
    2. на событие PropertyChanged INotifyPropertyChanged-коллекции (не элементов) - тоже не реагирует, тут я ожидал другого поведения (выходит, что INPC работает только с биндингами и пересоздает визуальный компонент полностью).
    3. с INotifyCollectionChanged все хорошо - у старых элементов анимация продолжается, но аргументы для события нужно детально описывать - закинуть null или неверные индексы не вышло.
    4. если любую коллекцию переприсвоить в ItemsSource - то анимации слетают, несмотря на неизменность содержимого.

    Т.е. ItemsControl хорошо работает ТОЛЬКО с INotifyCollectionChanged (что собственно можно увидеть тут), никакого внутреннего механизма сравнения ссылок там нет...

    Вопрос, собственно, о том как проектировать слой данных без привязки к wpf. Выходит, что почти всегда придется писать врапперы в wpf-интерфейсе. Всякие Хранилище.Where(...) просто так в ItemsControl не закинуть, и простой INotifyPropertyChanged (на коллекцию) не поможет.
  • Почему асинхронный метод работает как отдельный поток?

    @rFczZZ Автор вопроса
    ok, я не понял про контекст (наверное как-то связано с ОС и тем как она управляет моим приложением), но нашел некий Nito.AsyncEx.AsyncContext, с ним действительно работает как нужно. Буду дальше читать.