protected override void OnContentChanged(object oldContent, object newContent)
{
base.OnContentChanged(oldContent, newContent);
_contentReady = true;
UIElement oldElement = oldContent as UIElement;
UIElement newElement = newContent as UIElement;
// Require the appropriate template parts plus a new element to
// transition to.
if (_firstContentPresenter == null || _secondContentPresenter == null || newElement == null)
{
return;
}
NavigationInTransition navigationInTransition = null;
ITransition newTransition = null;
if (newElement != null)
{
navigationInTransition = TransitionService.GetNavigationInTransition(newElement);
TransitionElement newTransitionElement = null;
if (navigationInTransition != null)
{
newTransitionElement = _isForwardNavigation ? navigationInTransition.Forward : navigationInTransition.Backward;
}
if (newTransitionElement != null)
{
newElement.UpdateLayout();
newTransition = newTransitionElement.GetTransition(newElement);
PrepareContentPresenterForCompositor(_newContentPresenter);
}
}
_newContentPresenter.Opacity = 0;
_newContentPresenter.Visibility = Visibility.Visible;
_newContentPresenter.Content = newElement;
_oldContentPresenter.Opacity = 1;
_oldContentPresenter.Visibility = Visibility.Visible;
_oldContentPresenter.Content = oldElement;
if (_readyToTransitionToNewContent)
{
TransitionNewContent(newTransition, navigationInTransition);
}
else
{
_storedNewTransition = newTransition;
_storedNavigationInTransition = navigationInTransition;
}
}