44 using System . Composition ;
55 using System . Linq ;
66 using System . Windows ;
7+ using System . Windows . Controls ;
8+ using System . Windows . Threading ;
79
810 using ResXManager . View . Properties ;
911 using ResXManager . View . Visuals ;
1214 using TomsToolbox . Wpf ;
1315
1416 [ Export , Shared ]
15- internal class AddNewKeyCommand : DelegateCommand < DependencyObject >
17+ internal class AddNewKeyCommand : DelegateCommand < DataGrid >
1618 {
1719 private readonly ResourceViewModel _resourceViewModel ;
1820 private readonly IExportProvider _exportProvider ;
@@ -26,7 +28,7 @@ public AddNewKeyCommand(ResourceViewModel resourceViewModel, IExportProvider exp
2628 ExecuteCallback = InternalExecute ;
2729 }
2830
29- private void InternalExecute ( DependencyObject ? parameter )
31+ private void InternalExecute ( DataGrid ? dataGrid )
3032 {
3133 if ( _resourceViewModel . SelectedEntities . Count != 1 )
3234 {
@@ -47,7 +49,7 @@ private void InternalExecute(DependencyObject? parameter)
4749
4850 var application = Application . Current ;
4951
50- var owner = parameter != null ? Window . GetWindow ( parameter ) : application . MainWindow ;
52+ var owner = dataGrid != null ? Window . GetWindow ( dataGrid ) : application . MainWindow ;
5153
5254 var inputBox = new InputBox ( _exportProvider )
5355 {
@@ -76,6 +78,29 @@ private void InternalExecute(DependencyObject? parameter)
7678 try
7779 {
7880 _resourceViewModel . AddNewKey ( resourceFile , key ) ;
81+
82+ dataGrid ? . BeginInvoke ( ( ) =>
83+ {
84+ var selectedItem = dataGrid . SelectedItem ;
85+ dataGrid . ScrollIntoView ( selectedItem ) ;
86+ dataGrid ? . BeginInvoke ( DispatcherPriority . Background , ( ) =>
87+ {
88+ var container = dataGrid . ItemContainerGenerator . ContainerFromItem ( selectedItem ) ;
89+ if ( container == null )
90+ return ;
91+
92+ dataGrid ? . BeginInvoke ( DispatcherPriority . Background , ( ) =>
93+ {
94+ var element = container
95+ . VisualDescendantsAndSelf ( )
96+ . OfType < UIElement > ( )
97+ . FirstOrDefault ( item => item . Focusable ) ;
98+
99+ element ? . Focus ( ) ;
100+ } ) ;
101+ } ) ;
102+ } ) ;
103+
79104 }
80105 catch ( Exception ex )
81106 {
0 commit comments