Pergunta

Estou tendo problemas tentando obter um evento de clique ao fogo depois que o comando é executado. Eu estou tentando seguir o estilo MVVM do desenvolvimento.

Aqui está o cenário:

Na minha aplicação eu tenho uma grade de 2 por N botões, onde N é um conjunto dinamicamente carregada de botões (às vezes ele vai ser 2 x 2, às vezes é 5 x 9, eu não sei). Inicialmente, todas as colunas de botões serão escondidos, exceto para a primeira coluna. Ao clicar a primeira coluna, um comando é executado, e um fade em animação é tocada e mostra alguns botões da segunda coluna, dependendo de qual botão foi clicado na primeira coluna. Por exemplo, ao clicar no botão de cima na primeira coluna irá revelar os primeiros quatro botões na segunda coluna, enquanto que o botão inferior na primeira coluna irá revelar os três primeiros botões na segunda coluna.

Aqui está o problema:

Para cada botão, eu definir um CommandParameter para cada um dos botões na primeira coluna. Quando o comando é executado, os dados são processados, e uma propriedade é definida na VM que diz qual botão foi pressionado (eu só uso o CommandParameter novamente). Enquanto os dados estão sendo processados, eu quero mostrar o próximo conjunto de botões para o usuário. Eu tenho um evento de clique que leva o CommandParameter da VM e desempenha uma animação para mostrar os botões apropriados.

No entanto, o problema é que WPF gosta de fazer o evento Click primeiro antes do comando é demitido. Este é um problema já que a propriedade na VM que diz qual botão foi clicado não fica pronto!

Assim que me leva a um perguntas par ...

1) Existe uma maneira de executar o comando antes de disparar o evento?

2) eu estou fazendo isso certo? : P

Foi útil?

Solução

Em vez de usar um manipulador de eventos de clique, você poderia apenas DataTriggers configuração em seus botões.

Eles poderiam responder à propriedade em seu ViewModel, escondendo botões que você não quer aparecer, e mostrando o botão que você faz.

A coisa agradável sobre este é que a sua visão pode ser feito completamente em XAML, eo ViewModel é apenas a criação do estado (ou seja: eu estou neste estado), ea vista irá automaticamente ficar atualizado desde a ligação fará com que o nova DataTrigger ao fogo.

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