@@ -401,7 +401,7 @@ protected override async void OnNavigatedTo(NavigationEventArgs e)
401
401
base . OnNavigatedTo ( e ) ;
402
402
403
403
// Add item jumping handler
404
- CharacterReceived += Page_CharacterReceived ;
404
+ PreviewKeyDown += Page_PreviewKeyDown ; ;
405
405
406
406
navigationArguments = ( NavigationArguments ) e . Parameter ;
407
407
ParentShellPageInstance = navigationArguments . AssociatedTabInstance ;
@@ -565,7 +565,7 @@ protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
565
565
base . OnNavigatingFrom ( e ) ;
566
566
567
567
// Remove item jumping handler
568
- CharacterReceived -= Page_CharacterReceived ;
568
+ PreviewKeyDown -= Page_PreviewKeyDown ;
569
569
FolderSettings ! . LayoutModeChangeRequested -= BaseFolderSettings_LayoutModeChangeRequested ;
570
570
FolderSettings . GroupOptionPreferenceUpdated -= FolderSettings_GroupOptionPreferenceUpdated ;
571
571
FolderSettings . GroupDirectionPreferenceUpdated -= FolderSettings_GroupDirectionPreferenceUpdated ;
@@ -996,12 +996,33 @@ private void RemoveOverflow(CommandBarFlyout contextMenuFlyout)
996
996
overflowSeparator . Visibility = Visibility . Collapsed ;
997
997
}
998
998
999
- protected virtual void Page_CharacterReceived ( UIElement sender , CharacterReceivedRoutedEventArgs args )
999
+ protected virtual void Page_PreviewKeyDown ( object sender , KeyRoutedEventArgs e )
1000
1000
{
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 ) )
1002
1023
{
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 ) ;
1005
1026
}
1006
1027
}
1007
1028
0 commit comments