private void BeginMenuAnimations(IViewMenuItem collapsedVMI, IViewMenuItem expandedVMI) { if (collapsedVMI != null) { var listBoxItem = this.MenuListBox.ItemContainerGenerator.ContainerFromItem(collapsedVMI) as ListBoxItem; var subMenuBorder = (listBoxItem.Template as ControlTemplate).FindName("SubMenuBorder", listBoxItem) as Border; Storyboard.SetTargetProperty(this.SubMenuCollapseAnimation, new PropertyPath(Border.HeightProperty)); Storyboard.SetTarget(this.SubMenuCollapseAnimation, subMenuBorder); this.SubMenuCollapseAnimation.KeyFrames[0].Value = subMenuBorder.ActualHeight; this.SubMenuExpandCollapseSB.Children.Add(this.SubMenuCollapseAnimation); } else { this.SubMenuExpandCollapseSB.Children.Remove(this.SubMenuCollapseAnimation); } if (expandedVMI != null) { var listBoxItem = this.MenuListBox.ItemContainerGenerator.ContainerFromItem(expandedVMI) as ListBoxItem; var subMenuBorder = (listBoxItem.Template as ControlTemplate).FindName("SubMenuBorder", listBoxItem) as Border; Storyboard.SetTargetProperty(this.SubMenuExpandAnimation, new PropertyPath(Border.HeightProperty)); Storyboard.SetTarget(this.SubMenuExpandAnimation, subMenuBorder); this.SubMenuExpandAnimation.KeyFrames[1].Value = expandedVMI.Children.Count * 30 + 4; this.SubMenuExpandCollapseSB.Children.Add(this.SubMenuExpandAnimation); } else { this.SubMenuExpandCollapseSB.Children.Remove(this.SubMenuExpandAnimation); } this.SubMenuExpandCollapseSB.Begin(); }
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { IViewMenuItem collapsedVMI = null; IViewMenuItem expandedVMI = null; if (e.RemovedItems != null && e.RemovedItems.Count > 0 && e.RemovedItems[0] is IViewMenuItem) { collapsedVMI = e.RemovedItems[0] as IViewMenuItem; } if (e.AddedItems != null && e.AddedItems.Count > 0 && e.AddedItems[0] is IViewMenuItem) { expandedVMI = e.AddedItems[0] as IViewMenuItem; } this.BeginMenuAnimations(collapsedVMI, expandedVMI); }
public override void Initialize() { this.ViewMenuItem = this.GetViewMenuItem(); this.guiRoutingService.Register(this); }