@@ -401,7 +401,7 @@ protected override async void OnNavigatedTo(NavigationEventArgs e)
401401 base . OnNavigatedTo ( e ) ;
402402
403403 // Add item jumping handler
404- CharacterReceived += Page_CharacterReceived ;
404+ PreviewKeyDown += Page_PreviewKeyDown ; ;
405405
406406 navigationArguments = ( NavigationArguments ) e . Parameter ;
407407 ParentShellPageInstance = navigationArguments . AssociatedTabInstance ;
@@ -565,7 +565,7 @@ protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
565565 base . OnNavigatingFrom ( e ) ;
566566
567567 // Remove item jumping handler
568- CharacterReceived -= Page_CharacterReceived ;
568+ PreviewKeyDown -= Page_PreviewKeyDown ;
569569 FolderSettings ! . LayoutModeChangeRequested -= BaseFolderSettings_LayoutModeChangeRequested ;
570570 FolderSettings . GroupOptionPreferenceUpdated -= FolderSettings_GroupOptionPreferenceUpdated ;
571571 FolderSettings . GroupDirectionPreferenceUpdated -= FolderSettings_GroupDirectionPreferenceUpdated ;
@@ -996,12 +996,33 @@ private void RemoveOverflow(CommandBarFlyout contextMenuFlyout)
996996 overflowSeparator . Visibility = Visibility . Collapsed ;
997997 }
998998
999- protected virtual void Page_CharacterReceived ( UIElement sender , CharacterReceivedRoutedEventArgs args )
999+ protected virtual void Page_PreviewKeyDown ( object sender , KeyRoutedEventArgs e )
10001000 {
1001- if ( ParentShellPageInstance ! . IsCurrentInstance )
1001+ // Get the virtual key
1002+ var key = e . Key ;
1003+
1004+ // Convert to character if it's a printable key
1005+ string keyString = key . ToString ( ) ;
1006+
1007+ // Basic filtering: check if it's a letter
1008+ if ( key >= VirtualKey . A && key <= VirtualKey . Z )
1009+ {
1010+ char letter = ( char ) ( 'A' + ( key - VirtualKey . A ) ) ;
1011+
1012+ if ( ParentShellPageInstance ! . IsCurrentInstance )
1013+ {
1014+ ParentShellPageInstance ! . ShellViewModel . FilesAndFoldersFilter += letter . ToString ( ) . ToLowerInvariant ( ) ;
1015+ JumpString += letter . ToString ( ) . ToLowerInvariant ( ) ;
1016+ }
1017+ }
1018+ else if ( key is VirtualKey . Space && ! string . IsNullOrEmpty ( ParentShellPageInstance ! . ShellViewModel . FilesAndFoldersFilter ) )
1019+ {
1020+ ParentShellPageInstance ! . ShellViewModel . FilesAndFoldersFilter += " " ;
1021+ }
1022+ else if ( key is VirtualKey . Back && ! string . IsNullOrEmpty ( ParentShellPageInstance ! . ShellViewModel . FilesAndFoldersFilter ) )
10021023 {
1003- char letter = args . Character ;
1004- JumpString += letter . ToString ( ) . ToLowerInvariant ( ) ;
1024+ ParentShellPageInstance . ShellViewModel . FilesAndFoldersFilter =
1025+ ParentShellPageInstance . ShellViewModel . FilesAndFoldersFilter . Substring ( 0 , ParentShellPageInstance . ShellViewModel . FilesAndFoldersFilter . Length - 1 ) ;
10051026 }
10061027 }
10071028
0 commit comments