Вопрос

У меня есть простое приложение WPF, содержащее пользовательский элемент управления, который анимируется с помощью пары раскадровок в главном окне.Я анимирую непрозрачность пользовательского элемента управления, Scaletransform.scalex и Scaletransform.scaley, чтобы он появлялся и исчезал из поля зрения.Выглядит круто, за исключением первого запуска.Анимация настроена на 3/10 секунды, хотя во время тестирования я увеличил ее.Я попытался установить значение по умолчанию на долю секунды, чтобы увидеть, есть ли проблема, когда значения свойств, которые я анимирую, не соответствуют значениям по умолчанию, как ожидалось.Это ничего не дало.Я даже явно вызываю анимацию «скрытия» в загруженном окне, чтобы посмотреть, поможет ли это мне установить значения по умолчанию, но это тоже не сработало.Есть ли какая-то инициализация, которую выполняет среда выполнения при первом запуске анимации?Есть ли способ явно вызвать такую ​​​​инициализацию перед отображением пользовательского интерфейса?Симптомом является то, что элемент управления не виден даже примерно до 2/10 секунды первой анимации.Иногда это длиннее, и элемент управления появляется после полной анимации (непрозрачность и размер являются их окончательными значениями, когда он наконец появляется).

Это было полезно?

Решение

Похоже, вы устанавливаете DataContext пользовательского элемента управления прямо перед анимацией.Предположительно, у вас происходит привязка, которая создает визуальные объекты и добавляет их в визуальное дерево одновременно с запуском анимации.Для этого требуется обработка, за которую борется анимация.Чтобы избежать этого, необходимо создать экземпляр элемента управления (с установленным DataContext), но скрыть его, чтобы не нужно было создавать визуальный объект во время анимации.(через моего коллегу Тима Ли)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top