Pergunta

Eu tenho o controle da ListView no meu aplicativo, que é bi -lince para a coleção de CustomObject ListaCustomObject>. o CustomObject tem vista separada. Este ListView tem um modelo de visualização separada.

A lista de coleções _customObject é contida na classe ListView ViewModel.

Minha consulta:

Quero invocar uma visualização que mostre propriedades do objeto personalizado, quando o usuário clique duas vezes em qualquer linha do ListView. O comando ListView Double Click é BIMIND para o ListViewDoublClick Comando no modelo de exibição. O CustomObject está no argumento do evento do comando listView Double Click. Para alcançar isso, tenho que passar no objeto personalizado (ou uma propriedade de identificação exclusiva do objeto personalizado através do qual posso recuperar o objeto personalizado da coleção) como parâmetro de comando.

Por favor, sugira -me a solução !!

Foi útil?

Solução

A maneira mais fácil de fazer isso é adicionar um manipulador de eventos de clique duplo à lista. Lembre -se: MVVM não significa nenhum código na visualização! Isso significa que a visão apenas lida com as preocupações da visão. Você pode fazer um argumento muito bom de que os EventArgs só sejam significativos para a visão e, se você quiser passá -lo para o ViewModel, deve passar apenas as informações relevantes. Se você precisar fazer algo como extrair dados de um EventArgs para passar para o ViewModel, isso é aceitável e adequado ... e melhor do que passar os eventos para o ViewModel, IMHO.

(Tenho certeza de que vou ter alguma discordância nesse ponto, mas lidar com a interação da interface do usuário é uma preocupação de ver e se a alternativa estiver escrevendo um comportamento ou usando uma estrutura para obter um único controle funcionando em uma única página, lembre -se: yagni e padrões não são religião.)

Várias das estruturas do MVVM permitem que você faça isso (embora haja muita discussão sobre se for uma boa ideia ou não). InParticular, o Kit de ferramentas de luz MVVM Adicionou isso há pouco tempo para apoiar o arrasto e soltar (se bem me lembro da postagem do blog corretamente).

Se você não está usando uma estrutura MVVM, acabei escrevendo um comportamento para me permitir fazer isso se eu fizesse a mesma coisa em vários lugares. Nesse caso, geralmente extraio as informações que me preocupo com os EventArgs (ou seja, você provavelmente não quer o evento completo, mas provavelmente se importa com qual item foi clicado e talvez alguns outros bits de dados).

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