void MainWindowNavigated(object sender, NavigationEventArgs e) { GoBackCommand.RaiseCanExecuteChanged(); var newCtrl = (UIElement)e.Content; BindingOperations.SetBinding(newCtrl, HeightProperty, Utility.CreateBinding(_contentGrid, "ActualHeight")); BindingOperations.SetBinding(newCtrl, WidthProperty, Utility.CreateBinding(_contentGrid, "ActualWidth")); RemoveLogicalChild(newCtrl); _contentCanvas.Children.Add(newCtrl); if (_lastPage == null) { return; } var moveRight = _lastMode == NavigationMode.Forward || _lastMode == NavigationMode.New; var ctx = KeyMenuContext.GetContext(this); ctx.PauseUpdates(); var newDa = new DoubleAnimation(); newDa.From = moveRight ? _contentGrid.ActualWidth : -_contentGrid.ActualWidth; newDa.To = 0; newDa.Duration = TimeSpan.FromSeconds(0.175); newDa.EasingFunction = new PowerEase(); newDa.Completed += (s, e2) => ctx.ResumeUpdates(); newCtrl.Visibility = Visibility.Visible; newCtrl.BeginAnimation(Canvas.LeftProperty, newDa); var oldDa = new DoubleAnimation(); oldDa.From = 0; oldDa.To = -newDa.From; oldDa.Duration = newDa.Duration; oldDa.EasingFunction = new PowerEase(); oldDa.Completed += (s, e2) => _contentCanvas.Children.Remove(_lastPage); _lastPage.BeginAnimation(Canvas.LeftProperty, oldDa); }
protected override void OnEvent(EventArgs eventArgs) { if (_registered) { return; } KeyMenuContext.Register(Source); _targetElement = !ActiveOnFocus?GetRoot(Source) : Source; if (FiredOn == KeyTriggerFiredOn.KeyDown) { _targetElement.KeyDown += OnKeyPress; } else { _targetElement.KeyUp += OnKeyPress; } _registered = true; }