2012-01-17 3 views
2

Я разрабатываю приложение в WPF и .Net 4, которое содержит анимации.Неявно отключить анимацию в WPF

Мои элементы управления связаны с определенными значениями в бизнес-логике, которая переключает анимацию при определенных условиях. Проблема, с которой я сталкиваюсь, заключается в том, что эти анимации могут воспроизводиться сразу после запуска приложения, что делает элементы управления «анимированными» к их начальному состоянию при первом отображении.

Скажем, например, что я разрабатываю часть входа в приложение. У меня есть элемент управления, который представляет собой настраиваемое всплывающее окно, которое должно появляться над полями имени пользователя и пароля, если они недействительны. Когда приложение запускается, оба этих поля по умолчанию недействительны, что побуждает всплывающие окна отображаться через анимацию. Я бы хотел, чтобы эти анимации не играли при запуске, не отключая их явно.

Еще один пример демонстрации моей проблемы - это кнопка переключения, привязанная к логическому свойству. Если я сохранил состояние кнопки, которое было переключено до закрытия приложения, кнопка будет «анимировать» по отношению к переключенному состоянию, когда приложение запустится (так как у меня есть анимация между перегруженными состояниями) вместо того, чтобы просто переключаться на без анимации.

Есть ли способ временно отключить все анимации от игры?

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

Storyboard theBoard = (Storyboard)FindResource(resourceName); 
theBoard.Begin(this, true); 
theBoard.SkipToFill(this); 

Как бы вы могли отключить анимацию без явного отключения их по одному? Возможно ли такое?

+2

Проблема не в вашем взгляде, но логика, которая запускает представление, отображающее имя пользователя и пароль, является недопустимой. Когда вы проверяете, действительны ли они? –

+0

У меня есть два булевых свойства, UsernameIsValid и PasswordIsValid, для которых по умолчанию используется false. Поле допустимо в том случае, если оно не пустое и в случае имени пользователя не содержит специального символа. Эти условия проверяются, когда пользователь вводит данные в обоих полях. Когда оба значения действительны, кнопка «Логин» включена. Я понимаю вашу точку зрения, и я подумал о том, чтобы пометить их как действительные при запуске, но я бы предпочел не «взломать» систему. –

+1

@ Hussein Khalil Я считаю, что один из параметров метаданных UI DP - Animatable, поэтому, предположительно, вы можете попробовать установить его в false, это поможет? –

ответ

0

Как использовать свойство прикрепленной зависимости (прилагается к StoryBoards), которое включало бы или отключило бы ваши анимации (или задало бы их продолжительность 0)? Может быть, есть более простое решение, но, поскольку ни один из них не предлагается, я предлагаю его.
Rq: Я не уверен, что элементы управления, анимированные при открытии окна, очень скучны. Но я не знаю, может быть, если на экране много анимации, возможно, это может выглядеть странно.

+0

Спасибо Винсент. Я закончил тем, что исправил эту проблему, переписав логику моего кода, поскольку я не мог найти лучшего решения, когда я разместил этот вопрос. Использование связанного свойства зависимостей, возможно, решило проблему, мне, возможно, придется попробовать ее. –

+0

ну, так как он не был протестирован, я не уверен, что мой ответ - ответ, но рад, что вы смогли решить свою проблему. – GameAlchemist

Смежные вопросы