Я пытаюсь узнать о подключенном поведении в WPF / WP7 Silverlight, и я столкнулся с концептуальным препятствием, которое я задавался вопросом, может ли кто-нибудь взвесить.
Примером функциональности, которую я пытаюсь создать, является следующее: пользователь нажимает на кнопку, чей обработчик Click запускает навигацию (т. Е. NavigationContext.Navigate ()), и до того, как навигация действительно происходит, анимация происходит на кнопка, уменьшающая непрозрачность с 1 до 0 (эффект «затухания»).
Итак, по порядку:
- Пользователь нажимает кнопку
- Кнопка выполняет анимацию
- Навигация происходит
Достаточно просто, верно? Я создал прикрепленное поведение, которое выглядит так:
public class FadeBehavior : Behavior<Button>
{
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.Click += (obj, args) => {
Storyboard sb = new Storyboard();
DoubleAnimation an = new DoubleAnimation();
an.Duration = TimeSpan.FromMilliseconds(300);
an.From = 1;
an.To = 0;
Storyboard.SetTarget(an, AssociatedObject);
Storyboard.SetTargetProperty(an, new PropertyPath("Opacity"));
sb.Children.Add(an);
sb.Begin();
};
}
}
Это, очевидно, работает нормально, если .xaml.cs страницы, на которой находится кнопка, не содержит обработчика Click, который запускает навигацию, но когда я подключаю это, анимация не завершается до того, как происходит навигация. Конечно, я понимаю, почему это так, но мне интересно, есть ли способ для достижения этой цели, который также демонстрирует замечательное свойство не ужасного дизайна.
Я нашел этот SO поток , который, по-видимому, связан, но является ли принятый ответ ДЕЙСТВИТЕЛЬНО единственным способом сделать это?
Спасибо за вашу помощь.
РЕДАКТИРОВАТЬ: Если у вас есть WP7, и вы одержимы идеей выяснить это, приложение для чтения Reddit «Бэконит» демонстрирует поведение, аналогичное тому, которое меня интересует, когда вы нажимаете на заголовок рассказа. .