s eventos @MouseDoubleClick não surgem
Meu cenário, simplificado: eu tenho um ListView contendo linhas de Funcionários e, em cada linha de Funcionário, existem os botões "Aumentar" e "Diminuir" ajustando seu salári
Pretenda que, no meu programa, clicar duas vezes na linha de Funcionário significa "despedir esta pessoa"
Oproblem é que enquanto clico em "Aumentar" rapidamente, isso dispara um evento de clique duplo no ListViewItem. Naturalmente, não quero demitir pessoas quando estou apenas aumentando o salário delas.
De acordo com o funcionamento de todos os outros eventos, espero poder resolver isso definindoHandled=true
no evento. Isso, no entanto, não funciona. Parece-me que o WPF gera dois eventos de clique duplo separados e completamente desvinculado
A seguir, um exemplo mínimo para reproduzir meu problema. Os componentes visíveis:
<ListView>
<ListViewItem MouseDoubleClick="ListViewItem_MouseDoubleClick">
<Button MouseDoubleClick="Button_MouseDoubleClick"/>
</ListViewItem>
</ListView>
E o código do manipulador:
private void Button_MouseDoubleClick(object s, MouseButtonEventArgs e) {
if (!e.Handled) MessageBox.Show("Button got unhandled doubleclick.");
e.Handled = true;
}
private void ListViewItem_MouseDoubleClick(object s, MouseButtonEventArgs e) {
if (!e.Handled) MessageBox.Show("ListViewItem got unhandled doubleclick.");
e.Handled = true;
}
Depois de iniciar este programa e clicar duas vezes no botão listado,ambo messageboxes aparecem em sequência. (Além disso, o botão fica preso na posição abaixada depois disso.)
Como uma "correção" Ipod, no manipulador ListViewItem, inspecione a árvore visual anexada ao evento e verifique se "existe um botão em algum lugar" e, portanto, descarte o evento, mas esse é o último recurso. Quero pelo menos entender o problema antes de codificar esse kludg
Alguém sabeporqu WPF faz isso e uma maneira idiomática elegante de evitar o problem