/// <summary> /// Handles updating the ViewModel when the user opts to change the sort mode. /// </summary> /// <param name="sender">The ToggleMenuFlyoutItem being updated.</param> /// <param name="dp">The IsChecked property.</param> private void SortModeToggled(DependencyObject sender, DependencyProperty dp) { ToggleMenuFlyoutItem menuItem = sender as ToggleMenuFlyoutItem; DebugHelper.Assert(menuItem != null); DatabaseSortMode sortMode = menuItem.Tag as DatabaseSortMode; DebugHelper.Assert(sortMode != null); if (menuItem.IsChecked && ViewModel.SortMode != sortMode) { // Update ViewModel and uncheck all other buttons ViewModel.SortMode = sortMode; foreach (MenuFlyoutItemBase sortModeChild in this.sortModeFlyout.Items) { if (sortModeChild is ToggleMenuFlyoutItem item && item != menuItem) { item.IsChecked = false; } } } else if (!menuItem.IsChecked && ViewModel.SortMode == sortMode) { // If we are unchecking the current sort mode, abort - user can't do this menuItem.IsChecked = true; } }
public DesignDatabaseViewModel() { NavigationViewModel = new DatabaseNavigationViewModel(); SortMode = new DatabaseSortMode(DatabaseSortMode.Mode.DatabaseOrder, "Database order"); AvailableSortModes = new List <DatabaseSortMode> { SortMode }; IKeePassGroup dbGroup = GetGroup("Database"); IKeePassGroup subGroup = GetGroup("Subdirectory", dbGroup); dbGroup.Children.Add(subGroup); IKeePassGroup rootGroup = GetGroup("Current Root", subGroup); subGroup.Children.Add(rootGroup); rootGroup.Children.Add(GetGroup("Foo Directory", rootGroup)); rootGroup.Children.Add(GetGroup("Bar Directory", rootGroup)); rootGroup.Children.Add(GetGroup("Baz Directory", rootGroup)); rootGroup.Children.Add(GetGroup("Some Directory", rootGroup)); rootGroup.Children.Add(GetGroup("Some other node", rootGroup)); rootGroup.Children.Add(GetGroup("Foo Directory", rootGroup)); rootGroup.Children.Add(GetGroup("Bar Directory", rootGroup)); rootGroup.Children.Add(GetGroup("Baz Directory", rootGroup)); rootGroup.Children.Add(GetGroup("Some Directory", rootGroup)); rootGroup.Children.Add(GetGroup("Some other node", rootGroup)); rootGroup.Children.Add(GetGroup("Foo Directory", rootGroup)); rootGroup.Children.Add(GetGroup("Bar Directory", rootGroup)); rootGroup.Children.Add(GetGroup("Baz Directory", rootGroup)); rootGroup.Children.Add(GetGroup("Some Directory", rootGroup)); rootGroup.Children.Add(GetGroup("Some other node", rootGroup)); rootGroup.Children.Add(GetEntry("Bank", "welcome", parent: rootGroup)); rootGroup.Children.Add(GetEntry("Airline", "flymeout", "123456", "myairline.org", parent: rootGroup)); rootGroup.Children.Add(GetEntry("Facebook", "aloha", parent: rootGroup)); IKeePassEntry active = GetEntry("FooHub", "secure89", "Jimbo", "http://test.com/", parent: rootGroup); rootGroup.Children.Add(active); NavigationViewModel.SetEntry(active); SortedChildren = new ReadOnlyObservableCollection <IDatabaseNodeViewModel>( new ObservableCollection <IDatabaseNodeViewModel>( NavigationViewModel.ActiveGroup.Children .Select(node => new DatabaseNodeViewModel(node, false))) ); }