public override void OnApplyTemplate() { base.OnApplyTemplate(); if (LicenseManager.UsageMode == LicenseUsageMode.Designtime) { return; } btnToggle = (ToggleButton)this.Template.FindName("btnToggle", this); bcoreCM = (ContextMenu)this.Template.FindName("bcoreCM", this); tbox = (TextBox)this.Template.FindName("tbox", this); BreadcrumbBackgroundGrid = (Grid)this.Template.FindName("BreadcrumbBackgroundGrid", this); this.AddHandler(BreadcrumbItem.SelectedEvent, (RoutedEventHandler) delegate(object sender, RoutedEventArgs e) { BreadcrumbItem item = (BreadcrumbItem)e.OriginalSource; SelectedValue = (item.DataContext); e.Handled = true; }); this.AddHandler(Button.ClickEvent, (RoutedEventHandler) delegate(object sender, RoutedEventArgs e) { if (e.OriginalSource.Equals(btnToggle)) { //RootModel.IsBreadcrumbVisible = !RootModel.IsBreadcrumbVisible; if (!btnToggle.IsChecked == true) { tbox.Focus(); tbox.SelectAll(); } } //else if (RefreshCommand != null) // RefreshCommand.Execute(null); }); this.AddHandler(TextBox.LostFocusEvent, (RoutedEventHandler) delegate(object sender, RoutedEventArgs e) { if (e.OriginalSource.Equals(tbox)) { if (!btnToggle.IsMouseOver) { ToggleTextBoxVisibility(false); } ////if (this.IsKeyboardFocusWithin) //RootModel.IsBreadcrumbVisible = true; } }); SetupAnimations(); if (!EnableAutoFade) { UnfadeStoryBoard.Begin(); } }
protected override DependencyObject GetContainerForItemOverride() { BreadcrumbItem retVal = new BreadcrumbItem(); retVal.ShowToggle = false; retVal.IsTopLevel = false; return(retVal); }
private void updateToggle() { if (this.Items.Count > 0) { BreadcrumbItem firstItem = this.ItemContainerGenerator.ContainerFromIndex(0) as BreadcrumbItem; if (firstItem != null) { firstItem.ShowCaption = this.Items.Count == 1; } } }
//private List<UIElement> GhostFolders = new List<UIElement>(); //private void ArrangeChildren2(double availableSize, double firstItemWidth, bool arrangeVirtual) //{ // double curX = firstItemWidth; // for (int i = Children.Count - 1; i >= 1; i--) // { // BreadcrumbItem child = (BreadcrumbItem)Children[i]; // if (!(child.IsShadowItem && !arrangeVirtual)) // { // if (curX + child.DesiredSize.Width <= availableSize) // curX += child.DesiredSize.Width; // else break; // } // } // ArrangeChildren(curX + firstItemWidth, firstItemWidth, arrangeVirtual); //} private void ArrangeChildren(double availableSize, double firstItemWidth, bool arrangeVirtual) { double curX = availableSize; for (int i = Children.Count - 1; i >= 1; i--) { BreadcrumbItem child = (BreadcrumbItem)Children[i]; if (child.IsShadowItem && !arrangeVirtual) { SetArrangedRect(child, new Rect(0, 0, 0, 0)); } else { if (curX >= firstItemWidth || i == Children.Count - 1) { if (curX - firstItemWidth < child.DesiredSize.Width) { Rect newRect = new Rect(new Point(firstItemWidth, 0), new Point(curX + firstItemWidth, child.DesiredSize.Height)); SetArrangedRect(child, newRect); } else { SetArrangedRect(child, new Rect(curX - child.DesiredSize.Width + firstItemWidth, 0, child.DesiredSize.Width, child.DesiredSize.Height)); } SetIsArranged(child, true); } else { for (int j = 1; j <= Math.Min(i, Children.Count - 1); j++) { child = (BreadcrumbItem)Children[j]; SetArrangedRect(child, new Rect(0, 0, 0, 0)); child.Arrange(GetArrangedRect(child)); SetIsArranged(child, false); //GhostFolders.Add(child); } break; } child.Arrange(GetArrangedRect(child)); curX -= child.DesiredSize.Width; } } }
public static object OnShowCaptionCoerce(DependencyObject obj, object value) { BreadcrumbItem item = (BreadcrumbItem)obj; if (item._loaded) { item.raiseShowCaptionEvent((bool)value); } else { RoutedEventHandler action = null; action = (RoutedEventHandler) delegate { item.Loaded -= action; if (!item._showCaptionHandled && !(bool)value) { item.raiseShowCaptionEvent((bool)value); } item._showCaptionHandled = true; }; item.Loaded += action; } return(value); }