Question

J'ai WPF ComboBox dans un modèle de données (beaucoup de listes déroulantes dans la liste déroulante) et je veux gérer le bouton Entrée. Ce serait facile si c'était par exemple un bouton - J'utiliserais le chemin de liaison Command + Relative, etc. Malheureusement, je ne sais pas comment appuyer sur une touche avec une commande ou comment définir un gestionnaire d'événements à partir d'un modèle. Des suggestions?

Était-ce utile?

La solution 2

J'ai résolu mon problème en utilisant un gestionnaire d'événements habituel dans lequel je me promène dans l'arborescence visuelle, trouve le bouton correspondant et appelle sa commande. Si quelqu'un d'autre a le même problème, postez un commentaire et je fournirai plus de détails sur sa réalisation.

UPD

Voici ma solution:

Je recherche dans l'arborescence visuelle un bouton puis exécute la commande associée au bouton.

View.xaml:

<ComboBox KeyDown="ComboBox_KeyDown"/>
<Button Command="{Binding AddResourceCommand}"/>

View.xaml.cs:

private void ComboBox_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {
        var parent = VisualTreeHelper.GetParent((DependencyObject)sender);
        int childrenCount = VisualTreeHelper.GetChildrenCount(parent);

        for (int i = 0; i < childrenCount; i++)
        {
            var child = VisualTreeHelper.GetChild(parent, i) as Button;
            if (null != child)
            {
                child.Command.Execute(null);
            }
        }
    }
} 

Autres conseils

Vous pouvez utiliser EventSetter dans le style avec lequel vous définissez le modèle:

<Style TargetType="{x:Type ListBoxItem}">
      <EventSetter Event="MouseWheel" Handler="GroupListBox_MouseWheel" />
      <Setter Property="Template" ... />
</Style>

Cet article permet de router tout événement vers commande

.

http://nerobrain.blogspot.nl/2012/ 01 / wpf-events-to-command.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top