Pergunta

Eu tenho WPF ComboBox dentro de um modelo de dados (um monte de caixas de combinação na caixa de listagem) e eu quero lidar com enter. Seria fácil se fosse, por exemplo, um botão - Gostaria de usar + caminho de ligação Relativa Comando etc. Infelizmente, eu não tenho nenhuma idéia de como pressionar a tecla pega com um comando ou como manipulador de eventos conjunto de modelo. Alguma sugestão?

Foi útil?

Solução 2

Eu já resolveu o meu problema usando um manipulador de eventos de costume, onde eu ando através da árvore visual, encontrar botão correspondente e chamá-lo de comando. Se ninguém tem o mesmo problema, por favor postar um comentário e eu vou fornecer mais detalhes de realização.

UPD

Aqui está a minha solução:

Eu procuro a árvore visual de um botão e comando associado com o botão de execução.

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

Outras dicas

Você pode usar o EventSetter no estilo que você está definindo o modelo com:

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

Este artigo tem uma maneira para encaminhar qualquer Event para Command

http://nerobrain.blogspot.nl/2012/ 01 / WPF eventos-to-command.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top