Domanda

Ho ComboBox WPF all'interno di un modello di dati (molte caselle combinate nella casella di riepilogo) e desidero gestire il pulsante Invio. Sarebbe facile se fosse ad es. un pulsante: vorrei utilizzare Command + Percorso di rilegatura relativo ecc. Sfortunatamente, non ho idea di come gestire la pressione dei tasti con un comando o come impostare il gestore eventi dal modello. Qualche suggerimento?

È stato utile?

Soluzione 2

Ho risolto il mio problema utilizzando un normale gestore di eventi in cui cammino attraverso l'albero visivo, trovo il pulsante corrispondente e lo chiamo comando. Se qualcun altro ha lo stesso problema, pubblica un commento e fornirò maggiori dettagli sulla realizzazione.

UPD

Ecco la mia soluzione:

Cerco un pulsante nell'albero visivo e quindi eseguo il comando associato al pulsante.

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);
            }
        }
    }
} 

Altri suggerimenti

Puoi utilizzare EventSetter nello stile con cui stai impostando il modello:

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

Questo articolo ha un modo per instradare qualsiasi Evento a Command

http://nerobrain.blogspot.nl/2012/ 01 / WPF-eventi-a-command.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top