/// <summary>
        /// Create the style for the navigation menu items.
        /// </summary>
        private Style CreateMenuItemContainerStyle(FolderMenuIconConverter imageMenuConverter)
        {
            Style menuItemContainerStyle = new Style()
            {
                TargetType = typeof(MenuItem)
            };
            Setter icon = new Setter()
            {
                Property = MenuItem.IconProperty,
                Value    = new Binding("Entity.ImageSource")
                {
                    Converter = imageMenuConverter
                }
            };

            menuItemContainerStyle.Setters.Add(icon);

            return(menuItemContainerStyle);
        }
        /// <summary>
        /// Initializes an instance of the <c>FolderNavBar</c> class.
        /// </summary>
        public FolderNavBar()
        {
            PopupButton popupButton = new PopupButton()
            {
                DisplayMode = PopupButtonDisplayMode.ButtonOnly,
                IsRounded   = false,
                IsTransparencyModeEnabled = true
            };
            Image refresh = new Image()
            {
                Source            = new BitmapImage(new Uri("Resources/Refresh16.png", UriKind.Relative)),
                Stretch           = Stretch.None,
                VerticalAlignment = System.Windows.VerticalAlignment.Center
            };
            MultiBinding tooltip = new MultiBinding()
            {
                Converter = new StringFormatConverter(), ConverterParameter = "{}Refresh {0}"
            };
            PathConverter           pathConverter      = new PathConverter();
            FolderIconConverter     imageConverter     = new FolderIconConverter();
            FolderMenuIconConverter imageMenuConverter = new FolderMenuIconConverter();

            this.breadcrumb = new Breadcrumb();

            this.breadcrumb.Margin                = new Thickness(0);
            this.breadcrumb.MenuVerticalOffset    = -2;
            this.breadcrumb.AutoMinimizeItemCount = 0;
            this.breadcrumb.ConvertItem          += OnBreadcrumbConvertItem;
            this.breadcrumb.ImageMinWidth         = 16;

            this.breadcrumb.SetBinding(Breadcrumb.RootItemProperty, new Binding()
            {
                Source = this, Path = new PropertyPath("RootNode")
            });

            this.breadcrumb.ItemContainerStyle       = CreateRootBreadcrumbItemStyle(imageConverter);
            this.breadcrumb.ItemTemplate             = CreateBreadcrumbItemTemplate();
            this.breadcrumb.MenuItemTemplate         = CreateMenuItemNormalTemplate();
            this.breadcrumb.MenuItemContainerStyle   = CreateMenuItemContainerStyle(imageMenuConverter);
            this.breadcrumb.MenuItemExpandedTemplate = CreateMenuItemExpandedTemplate();
            this.breadcrumb.ComboBoxItemTemplate     = CreateComboBoxItemTemplate(pathConverter);

            this.breadcrumb.SetBinding(Control.BackgroundProperty, new Binding("Background")
            {
                Source = this, Mode = BindingMode.TwoWay
            });
            this.breadcrumb.SetBinding(Control.BorderThicknessProperty, new Binding("BorderThickness")
            {
                Source = this, Mode = BindingMode.TwoWay
            });
            this.breadcrumb.SetBinding(Control.BorderBrushProperty, new Binding("BorderBrush")
            {
                Source = this, Mode = BindingMode.TwoWay
            });

            tooltip.Bindings.Add(new Binding()
            {
                Source = this.breadcrumb,
                Path   = new PropertyPath("SelectedItem.Entity.Name"),
                Mode   = BindingMode.OneWay
            });
            popupButton.Content = refresh;
            this.breadcrumb.ActionButtons.Add(popupButton);

            this.Content = this.breadcrumb;

            this.history = new ObservableCollection <FolderNavNode>();
            this.breadcrumb.ComboBoxItemsSource  = history;
            this.breadcrumb.SelectedItemChanged += OnSelectedItemChanged;

            this.SetBinding(FolderNavBar.IsEditingProperty, new Binding("IsEditing")
            {
                Source = this.breadcrumb
            });

            if (pathConverter != null)
            {
                pathConverter.SetBinding(PathConverter.RootProperty, new Binding("RootNode")
                {
                    Source = this, Mode = BindingMode.OneWay
                });
            }
        }