/// <summary> /// Sets if the navigation file must be present as a chapter. /// </summary> /// <param name="position"></param> public void SetNavigation(NavigationPosition position) { //Finds the navigation ID in the manifest string navId = (string)manifest .Elements(opfNamespace + "item") .FirstOrDefault(x => x.HasAttributes && (string)x.Attribute("properties") == "nav") ?.Attribute("id"); //The navigation must exists, otherwise throw exception if (navId == null) { throw new Exception("Could not find the navigation file in the manifest"); } //Removes the navigation from the spine spine .Elements(opfNamespace + "itemref") .FirstOrDefault(x => x.HasAttributes && (string)x.Attribute("idref") == navId) ?.Remove(); //If the navigation is set as FirstChapter, adds it to the spine if (position == NavigationPosition.FirstChapter) { spine.AddFirst( new XElement(opfNamespace + "itemref", new XAttribute("idref", navId) ) ); } }
public NavigationAttribute(string title, string url, int order, string iconClass, NavigationPosition position) { Title = title; Position = position; IconClass = iconClass; Order = order; Url = url; }
public static IEnumerable <NavigationItem> GetItems(Assembly asm, NavigationPosition position) { var items = from n in GetItems(asm) let attr = n.Attributes.FirstOrDefault(a => a.Position == position) where n.Attributes.Any(a => a.Position == position) select new NavigationItem { Title = attr.Title, IconClass = attr.IconClass, Url = attr.Url, Order = attr.Order }; return(items.OrderBy(i => i.Order).ThenBy(i => i.Title).ToArray()); }
/// <summary> /// Event handler to handle navigation event. /// </summary> /// <param name="sender">Sender of event.</param> /// <param name="eventargs">Event arguments</param> private void OnNavigationEvent(object sender, NavigationEventArgs eventargs) { NavigationPosition navigationPosition = eventargs.NavigationPosition; bool enabledState = navigationPosition != NavigationPosition.None; _backButton.Enabled = enabledState; _nextButton.Enabled = enabledState; if (navigationPosition == NavigationPosition.First) { _backButton.Enabled = false; } if (navigationPosition == NavigationPosition.Last) { _nextButton.Enabled = false; } }
/// <summary> /// Gets current navigation poistion. /// </summary> /// <returns>Navigation position</returns> private NavigationPosition GetNavigationPosition() { NavigationPosition position = NavigationPosition.None; if (_nodes.Count > 1) { if (_nodeIndex == 0) { position = NavigationPosition.First; } else if (_nodeIndex == _nodes.Count - 1) { position = NavigationPosition.Last; } else { position = NavigationPosition.Middle; } } return(position); }
/// <summary> /// Constructor to create instance of /// </summary> /// <param name="navigationPosition">Navigation position</param> public NavigationEventArgs(NavigationPosition navigationPosition) { _navigationPosition = navigationPosition; }