2017-09-21 6 views
0

J'ai un contrôle ListBoxEdit DevExpress dans WPF et je veux faire défiler la page vers le bas/la page en cliquant sur un autre bouton.Contrôle WPF ListBoxEdit - Élever l'événement PageDown par programmation

Dans l'interface utilisateur, lorsque je me concentre sur le contrôle ListBoxEdit et sur la touche PageDown, cela fonctionne.

Lorsque j'essaye par programme, il échoue. Mon code est ci-dessous où DataSourceList est le x: Nom de mon contrôle ListBoxEdit.

var presentationSource = PresentationSource.FromDependencyObject(this.DataSourceList); 
var args = new KeyEventArgs(Keyboard.PrimaryDevice, presentationSource, 0, Key.PageDown); 

args.RoutedEvent = Keyboard.KeyDownEvent; 
this.DataSourceList.RaiseEvent(args); 

Une idée de ce que je fais mal?

Répondre

0

je l'ai trouvé :)

var child = this.DataSourceList.VisualChildren().FirstOrDefault(t => t.GetType() == typeof(ListBoxEditItem)); 
if (child != null) 
{ 
     var args = new KeyEventArgs(Keyboard.PrimaryDevice, Keyboard.PrimaryDevice.ActiveSource, 0,Key.PageDown); 
     args.RoutedEvent = Keyboard.KeyDownEvent; 
     args.Source = child; 
     InputManager.Current.ProcessInput(args); 
} 

Il semble que this.DataSourceList.RaiseEvent(args); n'a pas fait le l'affaire, tandis que la source de l'événement doit être le ListBoxEditItem plutôt que le contrôle de ListBoxEdit.