private void NavButton_Checked(object sender, RoutedEventArgs e) { DebugWrite(); var button = new InfoElement(sender); if (button.HamburgerButtonInfo.ButtonType == HamburgerButtonInfo.ButtonTypes.Toggle) { if (!button.HamburgerButtonInfo.IsChecked ?? false) { button.HamburgerButtonInfo.IsChecked = true; if (button.HamburgerButtonInfo.IsChecked ?? true) { Selected = button.HamburgerButtonInfo; } if (button.HamburgerButtonInfo.IsChecked ?? true) { button.HamburgerButtonInfo.RaiseChecked(e); } button.FrameworkElement.IsHitTestVisible = !button.HamburgerButtonInfo.IsChecked ?? false; } } }
private void PaneContent_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e) { DebugWrite($"OpenCloseMode {OpenCloseMode}"); if (DisplayMode == SplitViewDisplayMode.CompactInline || DisplayMode == SplitViewDisplayMode.Inline) { return; } var button = new InfoElement(e.OriginalSource); if (button.HamburgerButtonInfo?.IsChecked ?? false) { return; } switch (OpenCloseMode) { case OpenCloseModes.Auto: case OpenCloseModes.Tap: HamburgerCommand.Execute(null); break; } }
// handle keyboard navigation (tabs and gamepad) private void HamburgerMenu_KeyDown(object sender, KeyRoutedEventArgs e) { var currentItem = FocusManager.GetFocusedElement() as FrameworkElement; var lastItem = LoadedNavButtons.FirstOrDefault(x => x.HamburgerButtonInfo == (SecondaryButtons.LastOrDefault(a => a != Selected) ?? PrimaryButtons.LastOrDefault(a => a != Selected))); var focus = new Func <FocusNavigationDirection, bool>(d => { if (d == FocusNavigationDirection.Next) { return(FocusManager.TryMoveFocus(d)); } else if (d == FocusNavigationDirection.Previous) { return(FocusManager.TryMoveFocus(d)); } else { var control = FocusManager.FindNextFocusableElement(d) as Control; return(control?.Focus(FocusState.Programmatic) ?? false); } }); var escape = new Func <bool>(() => { if (DisplayMode == SplitViewDisplayMode.CompactOverlay || DisplayMode == SplitViewDisplayMode.Overlay) { IsOpen = false; } if (Equals(ShellSplitView.PanePlacement, SplitViewPanePlacement.Left)) { ShellSplitView.Content.RenderTransform = new TranslateTransform { X = 48 + ShellSplitView.OpenPaneLength }; focus(FocusNavigationDirection.Right); ShellSplitView.Content.RenderTransform = null; } else { ShellSplitView.Content.RenderTransform = new TranslateTransform { X = -48 - ShellSplitView.OpenPaneLength }; focus(FocusNavigationDirection.Left); ShellSplitView.Content.RenderTransform = null; } return(true); }); var previous = new Func <bool>(() => { if (Equals(currentItem, HamburgerButton)) { return(true); } else if (focus(FocusNavigationDirection.Previous) || focus(FocusNavigationDirection.Up)) { return(true); } else { return(escape()); } }); var next = new Func <bool>(() => { if (Equals(currentItem, HamburgerButton)) { return(focus(FocusNavigationDirection.Down)); } else if (focus(FocusNavigationDirection.Next) || focus(FocusNavigationDirection.Down)) { return(true); } else { return(escape()); } }); if (IsFullScreen) { return; } switch (e.Key) { case VirtualKey.Up: case VirtualKey.GamepadDPadUp: if (!(e.Handled = previous())) { Debugger.Break(); } break; case VirtualKey.Down: case VirtualKey.GamepadDPadDown: if (!(e.Handled = next())) { Debugger.Break(); } break; case VirtualKey.Right: case VirtualKey.GamepadDPadRight: if (SecondaryButtonContainer.Items.Contains(currentItem?.DataContext) && SecondaryButtonOrientation == Orientation.Horizontal) { if (Equals(lastItem.FrameworkElement, currentItem)) { if (!(e.Handled = escape())) { Debugger.Break(); } } else { if (!(e.Handled = next())) { Debugger.Break(); } } } else { if (!(e.Handled = escape())) { Debugger.Break(); } } break; case VirtualKey.Left: case VirtualKey.GamepadDPadLeft: if (SecondaryButtonContainer.Items.Contains(currentItem?.DataContext) && SecondaryButtonOrientation == Orientation.Horizontal) { if (Equals(lastItem.FrameworkElement, currentItem)) { if (!(e.Handled = escape())) { Debugger.Break(); } } else { if (!(e.Handled = previous())) { Debugger.Break(); } } } else { if (!(e.Handled = escape())) { Debugger.Break(); } } break; case VirtualKey.Space: case VirtualKey.Enter: case VirtualKey.GamepadA: if (currentItem != null) { var info = new InfoElement(currentItem); var hamburgerButtonInfo = info.HamburgerButtonInfo; if (hamburgerButtonInfo != null) { NavCommand.Execute(hamburgerButtonInfo); } } break; case VirtualKey.Escape: case VirtualKey.GamepadB: if (!(e.Handled = escape())) { Debugger.Break(); } break; } }
// handle keyboard navigation (tabs and gamepad) private void HamburgerMenu_KeyDown(object sender, KeyRoutedEventArgs e) { var currentItem = FocusManager.GetFocusedElement() as FrameworkElement; var lastItem = LoadedNavButtons.FirstOrDefault(x => x.HamburgerButtonInfo == (SecondaryButtons.LastOrDefault(a => a != Selected) ?? PrimaryButtons.LastOrDefault(a => a != Selected))); var focus = new Func<FocusNavigationDirection, bool>(d => { if (d == FocusNavigationDirection.Next) { return FocusManager.TryMoveFocus(d); } else if (d == FocusNavigationDirection.Previous) { return FocusManager.TryMoveFocus(d); } else { var control = FocusManager.FindNextFocusableElement(d) as Control; return control?.Focus(FocusState.Programmatic) ?? false; } }); var escape = new Func<bool>(() => { if (DisplayMode == SplitViewDisplayMode.CompactOverlay || DisplayMode == SplitViewDisplayMode.Overlay) IsOpen = false; if (Equals(ShellSplitView.PanePlacement, SplitViewPanePlacement.Left)) { ShellSplitView.Content.RenderTransform = new TranslateTransform { X = 48 + ShellSplitView.OpenPaneLength }; focus(FocusNavigationDirection.Right); ShellSplitView.Content.RenderTransform = null; } else { ShellSplitView.Content.RenderTransform = new TranslateTransform { X = -48 - ShellSplitView.OpenPaneLength }; focus(FocusNavigationDirection.Left); ShellSplitView.Content.RenderTransform = null; } return true; }); var previous = new Func<bool>(() => { if (Equals(currentItem, HamburgerButton)) { return true; } else if (focus(FocusNavigationDirection.Previous) || focus(FocusNavigationDirection.Up)) { return true; } else { return escape(); } }); var next = new Func<bool>(() => { if (Equals(currentItem, HamburgerButton)) { return focus(FocusNavigationDirection.Down); } else if (focus(FocusNavigationDirection.Next) || focus(FocusNavigationDirection.Down)) { return true; } else { return escape(); } }); if (IsFullScreen) { return; } switch (e.Key) { case VirtualKey.Up: case VirtualKey.GamepadDPadUp: if (!(e.Handled = previous())) Debugger.Break(); break; case VirtualKey.Down: case VirtualKey.GamepadDPadDown: if (!(e.Handled = next())) Debugger.Break(); break; case VirtualKey.Right: case VirtualKey.GamepadDPadRight: if (SecondaryButtonContainer.Items.Contains(currentItem?.DataContext) && SecondaryButtonOrientation == Orientation.Horizontal) { if (Equals(lastItem.FrameworkElement, currentItem)) { if (!(e.Handled = escape())) Debugger.Break(); } else { if (!(e.Handled = next())) Debugger.Break(); } } else { if (!(e.Handled = escape())) Debugger.Break(); } break; case VirtualKey.Left: case VirtualKey.GamepadDPadLeft: if (SecondaryButtonContainer.Items.Contains(currentItem?.DataContext) && SecondaryButtonOrientation == Orientation.Horizontal) { if (Equals(lastItem.FrameworkElement, currentItem)) { if (!(e.Handled = escape())) Debugger.Break(); } else { if (!(e.Handled = previous())) Debugger.Break(); } } else { if (!(e.Handled = escape())) Debugger.Break(); } break; case VirtualKey.Space: case VirtualKey.Enter: case VirtualKey.GamepadA: var info = new InfoElement(currentItem); NavCommand.Execute(info?.HamburgerButtonInfo); break; case VirtualKey.Escape: case VirtualKey.GamepadB: if (!(e.Handled = escape())) Debugger.Break(); break; } }
void PaneContent_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e) { DebugWrite($"OpenCloseMode {OpenCloseMode}"); var button = new InfoElement(e.OriginalSource); if (button.HamburgerButtonInfo?.IsChecked ?? false) return; switch (OpenCloseMode) { case OpenCloseModes.Auto: case OpenCloseModes.Tap: HamburgerCommand.Execute(null); break; } }
private void NavButton_VisualStateChanged(object sender, VisualStateChangedEventArgs e) { var button = new InfoElement(e.Control); switch (e.NewState.Name) { case "Normal": case "PointerOver": case "Pressed": case "Disabled": case "Checked": case "CheckedPointerOver": case "CheckedPressed": case "CheckedDisabled": case "Indeterminate": case "IndeterminatePointerOver": case "IndeterminatePressed": case "IndeterminateDisabled": default: break; } }
void NavButtonUnchecked(object sender, RoutedEventArgs e) { DebugWrite(); var button = new InfoElement(sender); if (button.HamburgerButtonInfo.ButtonType == HamburgerButtonInfo.ButtonTypes.Toggle) { button.HamburgerButtonInfo.RaiseUnchecked(e); button.FrameworkElement.IsHitTestVisible = true; } }
void NavButtonChecked(object sender, RoutedEventArgs e) { DebugWrite(); var button = new InfoElement(sender); if (button.HamburgerButtonInfo.ButtonType == HamburgerButtonInfo.ButtonTypes.Toggle) { button.HamburgerButtonInfo.IsChecked = (button.HamburgerButtonInfo.ButtonType == HamburgerButtonInfo.ButtonTypes.Toggle); if (button.HamburgerButtonInfo.IsChecked ?? true) Selected = button.HamburgerButtonInfo; if (button.HamburgerButtonInfo.IsChecked ?? true) button.HamburgerButtonInfo.RaiseChecked(e); button.FrameworkElement.IsHitTestVisible = !button.HamburgerButtonInfo.IsChecked ?? false; } }
void NavButton_Holding(object sender, Windows.UI.Xaml.Input.HoldingRoutedEventArgs e) { DebugWrite(); var button = new InfoElement(sender); button.HamburgerButtonInfo.RaiseHolding(e); e.Handled = true; }
void NavButton_RightTapped(object sender, Windows.UI.Xaml.Input.RightTappedRoutedEventArgs e) { DebugWrite(); var button = new InfoElement(sender); button.HamburgerButtonInfo.RaiseRightTapped(e); e.Handled = true; }
void NavButton_Loaded(object sender, RoutedEventArgs e) { DebugWrite(); var button = new InfoElement(sender); if (!LoadedNavButtons.Any(x => x.FrameworkElement == button.FrameworkElement)) { LoadedNavButtons.Add(button); if (AllNavButtonsAreLoaded) { HighlightCorrectButton(NavigationService.CurrentPageType, NavigationService.CurrentPageParam); } } }
void addItemElement(InfoElement pInfoElement) { pInfoElement.id = items.Count; items.Add(pInfoElement); nameToItem[pInfoElement.name] = pInfoElement; }
private void ShowCredentialDialog() { var isLogin = FindElement.Settings.CredentialLogin; if (isLogin) { PopupWindow popupLogin = new PopupWindow() { MinWidth = 400, FontFamily = TryFindResource("TeacherYar.Fonts.IRANSans") as FontFamily, FontSize = 14, Title = "ورود به نرم افزار", WindowStartupLocation = WindowStartupLocation.CenterScreen, HorizontalContentAlignment = HorizontalAlignment.Center, ShowInTaskbar = true, AllowsTransparency = true, WindowStyle = WindowStyle.None }; popupLogin.Closing += (s, e) => { e.Cancel = isLogin; if (e.Cancel = isLogin) { Environment.Exit(0); } }; StackPanel mainStack = new StackPanel() { FlowDirection = FlowDirection.RightToLeft }; TextBox txtUsername = new TextBox() { TabIndex = 0, Style = TryFindResource("TextBoxExtend") as Style, Margin = new System.Windows.Thickness(10) }; System.Windows.Controls.PasswordBox txtPassword = new System.Windows.Controls.PasswordBox() { TabIndex = 1, Style = TryFindResource("PasswordBoxExtend") as Style, Margin = new System.Windows.Thickness(10) }; InfoElement.SetContentHeight(txtUsername, 35); InfoElement.SetContentHeight(txtPassword, 35); InfoElement.SetTitle(txtUsername, "نام کاربری و رمز عبور خود را وارد کنید"); InfoElement.SetTitleAlignment(txtUsername, TitleAlignment.Top); InfoElement.SetPlaceholder(txtUsername, "نام کاربری"); InfoElement.SetPlaceholder(txtPassword, "رمز عبور "); Style buttonStyle = TryFindResource("ButtonPrimary") as Style; Button btnCancel = new Button { TabIndex = 3, IsCancel = true, Margin = new System.Windows.Thickness(10, 0, 10, 0), Style = buttonStyle, Content = "انصراف", Width = 100, HorizontalContentAlignment = HorizontalAlignment.Center }; Button btnLogin = new Button { TabIndex = 2, IsDefault = true, Margin = new System.Windows.Thickness(10, 0, 10, 0), Style = buttonStyle, Content = "ورود", Width = 100, HorizontalContentAlignment = HorizontalAlignment.Center }; btnCancel.Click += (s, e) => { Environment.Exit(0); }; btnLogin.Click += (s, e) => { try { using (var db = new DataClass.myDbContext()) { var usr = db.Users.Where(x => x.Username == txtUsername.Text && x.Password == txtPassword.Password); if (usr.Any()) { isLogin = false; popupLogin.Close(); } else { txtPassword.Focus(); txtPassword.Password = string.Empty; InfoElement.SetPlaceholder(txtPassword, "مشخصات اشتباه است دوباره امتحان کنید"); } } } catch (InvalidOperationException) { } }; StackPanel btnStack = new StackPanel { Orientation = Orientation.Horizontal, Margin = new Thickness(10), HorizontalAlignment = HorizontalAlignment.Center }; btnStack.Children.Add(btnLogin); btnStack.Children.Add(btnCancel); mainStack.Children.Add(txtUsername); mainStack.Children.Add(txtPassword); mainStack.Children.Add(btnStack); popupLogin.PopupElement = mainStack; popupLogin.ShowDialog(); } }