예제 #1
0
        public MenuViewModel(INavigationService navigationService, IEventAggregator eventAggregator,
                             ISessionStateService sessionStateService, RecipesFacade recipesFacade)
        {
            _navigationService   = navigationService;
            _sessionStateService = sessionStateService;
            _recipesFacade       = recipesFacade;

            eventAggregator.GetEvent <NavigationStateChangedEvent>().Subscribe(OnNavigationStateChanged);

            MenuItems = new ObservableCollection <MenuViewItem>(new[]
            {
                new MenuViewItem("Recettes", "\ued56", PageTokens.Recipes),
                new MenuViewItem("Sélection", "\uf0e3", PageTokens.SelectedRecipes),
                new MenuViewItem("Liste des courses", "\ue7bf", PageTokens.ShoppingList),
                new MenuViewItem("Favories", "\ue113", PageTokens.FavoriteRecipes),
                new MenuViewItem("Drives", "\uec47", PageTokens.Stores)
            });

            SettingsMenuItem = new MenuViewItem("Paramètres", "\ue713", PageTokens.Settings);

            UpdateSelectedRecipesMenuItemTitle();
            UpdateFavoritesMenuItemTitle();

            _recipesFacade.SelectedRecipesContainer.CollectionChanged += OnSelectedRecipesContainerChanged;
            _recipesFacade.FavoriteRecipesContainer.CollectionChanged += OnFavoriteRecipesContainerChanged;
        }
예제 #2
0
        private void OnNavigationStateChanged(NavigationStateChangedEventArgs args)
        {
            PageTokens currentPageToken;

            if (Enum.TryParse(args.Sender.Content.GetType().Name.Replace("Page", string.Empty), out currentPageToken))
            {
                _sessionStateService.SessionState[_CurrentPageTokenKey] = currentPageToken.ToString();
                var currentMenuItem = MenuItems.FirstOrDefault(item => item.Token == currentPageToken);
                if (currentMenuItem != null)
                {
                    SelectedMenuItem = currentMenuItem;
                }
            }
        }