Я подозреваю, что причина в том, что при выборе элемента сначала отменяется выбор старого элемента, а затем выбирается новый элемент.Это приводит к первому вызову false и второму значению true.
Возможно, во время отладки проверьте свойство DisplayName или подобное свойство в вашей модели представления, чтобы увидеть, какие элементы изменяются каждый раз, чтобы проверитьЭто действительно так.
Аналогично, когда вы расширяете узел, нет необходимости в свертывании других узлов.Поэтому он просто расширяет узел, который вы пытались развернуть (передавая true для IsExpanded).