Я пытаюсь использовать Transitioner из MaterialDesignInXaml с приложением PRISM 7 WPF в качестве региона для получения анимации при навигации. Оба «работают» вместе в том смысле, что навигация по представлениям успешна, но оживляет только первое представление. После осмотра я создал свой собственный RegionAdapter с новым RegionBehavior, который я скопировал из PRISM , чтобы поиграть.
Мне пришла в голову мысль, что, возможно, обработчики событий синхронизации сработали до того, как у переходного устройства была возможность создать свои контейнеры, которые позволяют его анимацию. Подозрительное поведение, которое я заметил, было то, что когда эта строка выполняла , она очищала SelectedItem Transitioner и анимация не запускалась. (Это было в прошлую пятницу в конце дня, поэтому я извиняюсь, что это немного нечетко в понедельник утром.)
Итак, я добавил действительно сложный механизм, позволяющий переходу «догонять» (await Task.Delay(1)
) в эквиваленте этой строки и анимация начала работать. Теперь он не очищает SelectedItem, когда представление деактивировано.
Мой вопрос: почему и как я могу сделать это более элегантно? У меня нет опыта работы с пользовательскими элементами управления пользовательским интерфейсом WPF. Мне не очень нравится то, что у меня есть, это в основном раздвоенный SelectorRegionAdapter с состоянием гонки, ожидающим наступления.