private void EndRename(TextBox textBox) { if (textBox == null || textBox.Parent == null) { // Navigating away, do nothing } else if (FolderSettings.LayoutMode == FolderLayoutModes.GridView) { Popup popup = textBox.Parent as Popup; TextBlock textBlock = (popup.Parent as Grid).Children[1] as TextBlock; popup.IsOpen = false; } else if (FolderSettings.LayoutMode == FolderLayoutModes.TilesView) { Grid grid = textBox.Parent as Grid; TextBlock textBlock = grid.Children[0] as TextBlock; textBox.Visibility = Visibility.Collapsed; textBlock.Visibility = Visibility.Visible; } textBox.LostFocus -= RenameTextBox_LostFocus; textBox.KeyDown -= RenameTextBox_KeyDown; FileNameTeachingTip.IsOpen = false; IsRenamingItem = false; // Re-focus selected list item GridViewItem gridViewItem = FileList.ContainerFromItem(RenamingItem) as GridViewItem; gridViewItem?.Focus(FocusState.Programmatic); }
private void Button_PreviewKeyDown(object sender, KeyRoutedEventArgs e) { list.UpdateLayout(); switch (e.Key) { case VirtualKey.Down: case VirtualKey.GamepadDPadDown: case VirtualKey.GamepadLeftThumbstickDown: //Stores all gridviews(one row enabled) if (listRivers.Count == 0) listRivers = TreeHelper.FindVisualChildren<GridView>(list); //Stores the selected index item of each river if (listIndexsInEachRiver == null || listIndexsInEachRiver.Count == 0) { listIndexsInEachRiver = new List<int>(); foreach (var item in listRivers) { listIndexsInEachRiver.Add(item.SelectedIndex); } } if (list != null && list.Items.Count > 0) { //Find the first river, including a textblock and a adaptive gridview var firstRiver = list.ContainerFromIndex(0) as ListViewItem; var gridview = TreeHelper.FindVisualChild<GridView>(firstRiver); if (gridview != null && gridview.Items.Count > 0) { GridViewItem item = new GridViewItem(); if (listIndexsInEachRiver[0] == -1) { item = gridview.ContainerFromIndex(0) as GridViewItem; listIndexsInEachRiver[0] = 0; } else { item = gridview.ContainerFromIndex(listIndexsInEachRiver[0]) as GridViewItem; listIndexsInEachRiver[0] = gridview.SelectedIndex; } item.Focus(FocusState.Programmatic); item.IsSelected = true; e.Handled = true; } } e.Handled = true; break; case VirtualKey.Up: case VirtualKey.GamepadDPadUp: case VirtualKey.GamepadLeftThumbstickUp: //Do nothing e.Handled = true; break; default: break; } }
public void RestoreFocus() { if (focusedItem != null) { focusedItem.Focus(FocusState.Keyboard); focusedItem = null; } }
public XboxStationsPage() { this.InitializeComponent(); stationsGridView.SingleSelectionFollowsFocus = true; long itemsSourceHandler = 0; itemsSourceHandler = stationsGridView.RegisterPropertyChangedCallback(GridView.ItemsSourceProperty, new DependencyPropertyChangedCallback(async(obj, dp) => { if (obj.GetValue(dp) != null) { //try and force focus on the first item when we load this page. stationsGridView.UnregisterPropertyChangedCallback(GridView.ItemsSourceProperty, itemsSourceHandler); //wait until we can get an item from the station grid view to focus. this is a hack but it'll have to do. GridViewItem firstItem = null; do { firstItem = (GridViewItem)stationsGridView.ContainerFromIndex(0); await Task.Delay(50); } while (firstItem == null); firstItem.Focus(FocusState.Keyboard); } })); #if DEBUG this.GotFocus += (object sender, RoutedEventArgs e) => { FrameworkElement focus = FocusManager.GetFocusedElement() as FrameworkElement; if (focus != null) { System.Diagnostics.Debug.WriteLine("got focus: " + focus.Name + " (" + focus.GetType().ToString() + ")"); } }; #endif }
private void ListView_PreviewKeyDown(object sender, KeyRoutedEventArgs e) { list.UpdateLayout(); if (listIndexsInEachRiver == null) { //Stores all gridviews(one row enabled) listRivers = TreeHelper.FindVisualChildren<GridView>(list); //Stores the selected index item of each river listIndexsInEachRiver = new List<int>(); foreach (var item in listRivers) { listIndexsInEachRiver.Add(item.SelectedIndex); } } //Declare: //Each river contains a title and a gridview(one row enabled). Remember it!!! //Current river var listItem = list.ContainerFromIndex(riverIndexInAllRivers) as ListViewItem; //Current GridView in current river var currentRiver = TreeHelper.FindVisualChild<GridView>(listItem); Debug.WriteLine("currentRiver.ActualWidth: " + currentRiver.ActualWidth); //Current item index in current river int itemIndexInCurrentRiver = currentRiver.SelectedIndex; //Current river index in all rivers //int riverIndexInCurrentRivers = listRivers.IndexOf(currentRiver); switch (e.Key) { case VirtualKey.Down: case VirtualKey.GamepadDPadDown: case VirtualKey.GamepadLeftThumbstickDown: if (riverIndexInAllRivers + 1 < listRivers.Count) { var nextRiver = listRivers[riverIndexInAllRivers + 1]; nextRiver.Focus(FocusState.Programmatic); if (nextRiver.Items != null && nextRiver.Items.Count > 0) { GridViewItem item = new GridViewItem(); if (listIndexsInEachRiver[riverIndexInAllRivers + 1] == -1) { item = nextRiver.ContainerFromIndex(0) as GridViewItem; listIndexsInEachRiver[riverIndexInAllRivers + 1] = 0; } else { item = nextRiver.ContainerFromIndex(listIndexsInEachRiver[riverIndexInAllRivers + 1]) as GridViewItem; listIndexsInEachRiver[riverIndexInAllRivers] = itemIndexInCurrentRiver; } item.Focus(FocusState.Programmatic); item.IsSelected = true; item.StartBringIntoView(); } riverIndexInAllRivers++; } e.Handled = true; break; case VirtualKey.Up: case VirtualKey.GamepadDPadUp: case VirtualKey.GamepadLeftThumbstickUp: if (riverIndexInAllRivers - 1 >= 0) { var previousRiver = listRivers[riverIndexInAllRivers - 1]; previousRiver.Focus(FocusState.Programmatic); if (previousRiver.Items != null && previousRiver.Items.Count > 0) { GridViewItem item = new GridViewItem(); if (listIndexsInEachRiver[riverIndexInAllRivers - 1] == -1) //Probably never happen { item = previousRiver.ContainerFromIndex(0) as GridViewItem; listIndexsInEachRiver[riverIndexInAllRivers] = 0; } else { item = previousRiver.ContainerFromIndex(listIndexsInEachRiver[riverIndexInAllRivers - 1]) as GridViewItem; listIndexsInEachRiver[riverIndexInAllRivers] = itemIndexInCurrentRiver; } item.Focus(FocusState.Programmatic); item.IsSelected = true; item.StartBringIntoView(); } riverIndexInAllRivers--; } e.Handled = true; break; case VirtualKey.Left: case VirtualKey.GamepadDPadLeft: case VirtualKey.GamepadLeftThumbstickLeft: if (itemIndexInCurrentRiver - 1 >= 0) { currentRiver.Focus(FocusState.Programmatic); GridViewItem item = new GridViewItem(); item = currentRiver.ContainerFromIndex(listIndexsInEachRiver[riverIndexInAllRivers]) as GridViewItem; listIndexsInEachRiver[riverIndexInAllRivers] = itemIndexInCurrentRiver - 1; item.Focus(FocusState.Programmatic); item.IsSelected = true; item.StartBringIntoView(); e.Handled = false; } else e.Handled = true; break; case VirtualKey.Right: case VirtualKey.GamepadDPadRight: case VirtualKey.GamepadLeftThumbstickRight: if (itemIndexInCurrentRiver + 1 <= currentRiver.Items.Count - 1) { currentRiver.Focus(FocusState.Programmatic); GridViewItem item = new GridViewItem(); item = currentRiver.ContainerFromIndex(listIndexsInEachRiver[riverIndexInAllRivers]) as GridViewItem; listIndexsInEachRiver[riverIndexInAllRivers] = itemIndexInCurrentRiver + 1; item.UpdateLayout(); item.Focus(FocusState.Programmatic); item.IsSelected = true; item.StartBringIntoView(); e.Handled = false; } else e.Handled = true; break; default: break; } }