Pregunta

Tengo WPF ComboBox dentro de una plantilla de datos (muchos cuadros de combinación en el cuadro de lista) y quiero manejar el botón de entrada. Sería fácil si fuera por ejemplo. un botón: usaría la ruta de enlace Comando + Relativo, etc. Desafortunadamente, no tengo idea de cómo manejar la pulsación de tecla con un Comando o cómo configurar el controlador de eventos desde la plantilla. ¿Alguna sugerencia?

¿Fue útil?

Solución 2

Resolví mi problema mediante el uso de un controlador de eventos habitual en el que recorre el árbol visual, encuentro el botón correspondiente y llamo el comando. Si alguien más tiene el mismo problema, publique un comentario y le proporcionaré más detalles de la realización.

UPD

Aquí está mi solución:

Busco en el árbol visual un botón y ejecuto el comando asociado con el botón.

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

Otros consejos

Puede usar el EventSetter en el estilo con el que está configurando la plantilla con:

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

Este artículo tiene una forma de enrutar cualquier Evento a Command

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top