Анимированные переходы в WPF - PullRequest
2 голосов
/ 07 июня 2009

Я не могу понять, чего мне здесь не хватает.

Вот проблема:
Рассмотрим шаблон (Control | Data) с триггером, который переключает видимость некоторых внутренних элементов пользовательского интерфейса. Например. показать TextBlock, когда IsReadOnly == true и показать TextBox, когда IsReadOnly == false.

Все идеально, если вы делаете это без анимации - один или два сеттера сделали бы эту работу. Но что, если вы хотите модную анимацию? Затем вы должны указать, какие анимации следует запускать в EnterActions и ExitActions.

Но проблема в том, что именно должна делать анимация? Изменение ширины / высоты кажется действительно уродливым, потому что фиксированные размеры в WPF почти всегда неверны, а также абсолютно негибки.

Пока что лучшее, что я придумал, - это изменение MaxHeight / MaxWidth до некоторой степени, это дает немного больше гибкости, но все еще кажется жестоким.

Как вы говорите WPF анимировать ширину / высоту элемента от 0 до «столько, сколько нужно»?

UPD: В настоящее время я делаю анимацию Opacity и RenderTransform, и это работает. Просто иногда мне хотелось бы видеть анимацию, в которой элементы перемещаются без преобразования. Это не критический вопрос, но довольно интересный для меня.

Ответы [ 4 ]

3 голосов
/ 07 июня 2009

Для большинства анимаций вы должны использовать либо преобразование рендеринга, либо непрозрачность, либо и то и другое. Я почти никогда ничего не использую.

Чтобы сделать ваш текст "Grow", анимируйте Scale of render transform. Не забудьте про центральную точку.

Используйте Expression Blend для быстрого достижения желаемого эффекта.

2 голосов
/ 30 апреля 2010

Проверить Переходные рамки . Это может быть то, что вам нужно.

1 голос
/ 02 ноября 2011

Рассмотрите возможность использования эффектов перехода из Blend SDK. Хорошее объяснение создания пользовательского TransitionControl, который использует пиксельный шейдер внутри, можно найти здесь .

0 голосов
/ 10 июня 2009

Я думаю, что лучший вариант - анимировать прозрачность: заставить TextBlock исчезать, а TextBox постепенно исчезать, и наоборот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...