Как правильно реализовать PropertyChanged для двух коллекций?
Как я понимаю, вопрос в том как не обновлять отдельно RoomsPage в RoomsPageViewModel.
Есть один способ избежать этого - удалить лишнее. В коде не видно каких-то особых примений RoomsPage. Сделав read-only проперти возвращающую roomsViewModel можно будет напрямую биндить Rooms в RoomsViewModel. Нужда в обёртке через RoomsPage отпадёт.
если вы используйте\отображаете одну и туже коллекцию в разных местах , то нужно как минимум создать два представления коллекции, для этой коллекции new ListCollectionView(MyObsCollection) и биндить её к ItemsSource (именно представление коллекции), ItemsControl это поймет и будет использовать именно это представление, а не дефолтное, тогда проблем с синхронизацией и дефолтным представлением коллекции не будет.
Иначе, когда текущий элемент изменится в 1 листбоксе или любом другом ItemsControl'е, то он будет автоматически меняться во всех остальных, если синхронизацию не отключить.