/// <summary> /// handle menu item click event /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MenuItemClickEventHandler(object sender, RoutedEventArgs e) { MenuItem item = e.OriginalSource as MenuItem; NavigationPanePage currentPage = (NavigationPanePage)item.Tag; // gets item's dependent page _SetPaneContent(currentPage); }
/// <summary> /// Select next page. /// </summary> public void SelectNextPage() { if (_selectedPageIndex < (_collPages.Count - 1)) { NavigationPanePage currentPage = _collPages[_selectedPageIndex + 1] as NavigationPanePage; _SetPaneContent(currentPage); } }
/// <summary> /// select previous page. /// </summary> public void SelectPreviousPage() { if (_selectedPageIndex >= 1) { NavigationPanePage currentPage = _collPages[_selectedPageIndex - 1] as NavigationPanePage; _SetPaneContent(currentPage); } }
/// <summary> /// moves one element from minimized collection to maximized collection /// </summary> private void _IncrementMaximizedCollection() { if (_collMinimizedPages.Count > 0) { NavigationPanePage currentPage = (NavigationPanePage)_collMinimizedPages[0]; _collMaximizedPages.Insert(_collMaximizedPages.Count, currentPage); _collMinimizedPages.Remove(currentPage); currentPage.IsPageButtonMinimized = false; } }
/// <summary> /// moves one element from maximized collection to minimized collection /// </summary> private void _DecrementMaximizedCollection() { if (_collMaximizedPages.Count > 0) { // gets first page in maximized collection NavigationPanePage currentPage = (NavigationPanePage)_collMaximizedPages[_collMaximizedPages.Count - 1]; _collMinimizedPages.Insert(0, currentPage); _collMaximizedPages.Remove(currentPage); currentPage.IsPageButtonMinimized = true; } }
/// <summary> /// adds new page to collection /// </summary> /// <param name="page"></param> public void AddPage(NavigationPanePage page) { _collPages.Add(page); _collMaximizedPages.Add(page); _UpdateButtonsStackLayout(); _UpdateButtonPanelsContent(); _UpdateMenu(); }
/// <summary> /// removes page from all collection /// </summary> /// <param name="page"></param> public void RemovePage(NavigationPanePage page) { _collPages.Remove(page); int i = _collMinimizedPages.BinarySearch(page); if (i >= 0) { _collMinimizedPages.Remove(page); } else { _collMaximizedPages.Remove(page); } _UpdateButtonsStackLayout(); _UpdateButtonPanelsContent(); _UpdateMenu(); }
/// <summary> /// define control content depending on selected page /// </summary> private void _SetPaneContent(NavigationPanePage page) { _DeselectAllPages(); page.IsPageSelected = true; _strHeader = page.PageHeader.ToString(); if (_expander.IsExpanded) { _expander.Header = _strHeader; } _CollapsedButtonLabel.Content = _strHeader; this._contentPresenter.Content = (UIElement)page.PageContent; _selectedPageIndex = _collPages.IndexOf(page); if (IsDropDownOpen) { IsDropDownOpen = false; } this.RaiseEvent(new RoutedEventArgs(NavigationPane.ChangeSelectionEvent)); }
/// <summary> /// Refill navigation pane with pan pages. /// </summary> private void _UpdateNavigationPaneButtonsStack() { if (navigationPane.Pages.Count != 0) navigationPane.RemoveAllPages(); if (_currentCategory != null) { // fill navigation pane with pages foreach (PageItem item in _currentCategory.Children) { NavigationPanePage navPage = new NavigationPanePage(); navPage.PageHeader = item.Caption; ImageSourceConverter converter = new ImageSourceConverter(); navPage.Image = (null == item.Page.Icon) ? (ImageBrush)App.Current.FindResource("DefaultBrush") : item.Page.Icon; navPage.Tag = item; _SetPropertiesBinding(navPage, item); navigationPane.AddPage(navPage); } } else { NavigationPanePage navPage = new NavigationPanePage(); navPage.PageHeader = _currentPageItem.Caption; ImageSourceConverter converter = new ImageSourceConverter(); navPage.Image = ((PageItem)_currentPageItem).Page.Icon; navPage.Tag = _currentPageItem; _SetPropertiesBinding(navPage, (PageItem)_currentPageItem); navigationPane.AddPage(navPage); } }
/// <summary> /// Sets binding to all necessary properties. /// </summary> /// <param name="navPage"></param> /// <param name="item"></param> private void _SetPropertiesBinding(NavigationPanePage navPage, PageItem item) { Binding enablingBinding = new Binding("IsAllowed"); enablingBinding.Mode = BindingMode.OneWay; enablingBinding.Source = item.Page; enablingBinding.NotifyOnSourceUpdated = true; BindingOperations.SetBinding(navPage, NavigationPanePage.IsEnabledProperty, enablingBinding); Binding reuquiredBinding = new Binding("IsRequired"); reuquiredBinding.Mode = BindingMode.OneWay; reuquiredBinding.Source = item.Page; reuquiredBinding.NotifyOnSourceUpdated = true; BindingOperations.SetBinding(navPage, NavigationPanePage.IsPageRequiredProperty, reuquiredBinding); Binding canCompleteBinding = new Binding("DoesSupportCompleteStatus"); canCompleteBinding.Mode = BindingMode.OneWay; canCompleteBinding.Source = item.Page; canCompleteBinding.NotifyOnSourceUpdated = true; BindingOperations.SetBinding(navPage, NavigationPanePage.DoesSupportCompleteStatusProperty, canCompleteBinding); Binding completeBinding = new Binding("IsComplete"); completeBinding.Mode = BindingMode.OneWay; completeBinding.Source = item.Page; completeBinding.NotifyOnSourceUpdated = true; BindingOperations.SetBinding(navPage, NavigationPanePage.IsPageCompleteProperty, completeBinding); }
/// <summary> /// define control content depending on selected page /// </summary> private void _SetPaneContent(NavigationPanePage page) { _DeselectAllPages(); page.IsPageSelected = true; _strHeader = page.PageHeader.ToString(); if (_expander.IsExpanded) _expander.Header = _strHeader; _CollapsedButtonLabel.Content = _strHeader; this._contentPresenter.Content = (UIElement)page.PageContent; _selectedPageIndex = _collPages.IndexOf(page); if (IsDropDownOpen) IsDropDownOpen = false; this.RaiseEvent(new RoutedEventArgs(NavigationPane.ChangeSelectionEvent)); }
/// <summary> /// Set selected certain page /// </summary> public void SelectPage(NavigationPanePage currentPage) { _SetPaneContent(currentPage); }
/// <summary> /// removes page from all collection /// </summary> /// <param name="page"></param> public void RemovePage(NavigationPanePage page) { _collPages.Remove(page); int i = _collMinimizedPages.BinarySearch(page); if (i >= 0) _collMinimizedPages.Remove(page); else _collMaximizedPages.Remove(page); _UpdateButtonsStackLayout(); _UpdateButtonPanelsContent(); _UpdateMenu(); }
/// <summary> /// handle page button click event /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void PageClickEventHandler(object sender, RoutedEventArgs e) { NavigationPanePage currentPage = (NavigationPanePage)e.OriginalSource; _SetPaneContent(currentPage); }