Grelha do PAM: MouseRightButtonDown disparando antes da selecção ser mudada para a grelha. A causar o problema de sincronização
Tenho uma situação em que estou a construir um menu de contexto para um botão direito do rato, carregue num datagrid. O conteúdo do menu baseia-se na'linha seleccionada'. No entanto, quando eu carregar com o botão direito numa nova linha, o Evento Do MouseRightButtonDown está a disparar (e a construir o menu de contexto) antes do evento SelectionChanged disparar, o que significa que o menu de contexto está a ser construído para o contexto de dados da linha anterior.
Há alguma maneira de evitar isto? Forçar o MouseRightButtonDown a esperar pelo A selecção foi mudada para ocorrer?Devo usar um atraso na tarefa? Parece estranho.
Aqui está o código em questão:private async void Grid_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
//build context menu using "Grid.SelectedItem"
}
private async void Grid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
//process logic for item changing
}
0
1 answers
Infelizmente, o rato de antevisão para cima e os eventos normais do rato para cima irão disparar antes de a selecção ser feita. Sugiro que use a antevisão da noite, mas o evento e uma bandeira. Por Exemplo:
bool isRightClick = false;
private Employee selectedDataGridRow;
public Employee SelectedDataGridRow
{
get
{
return selectedDataGridRow;
}
set
{
selectedDataGridRow = value;
NotifyPropertyChanged("SelectedDataGridRow");
if (isRightClick)
{
<do your work here>
isRightClick = false;
}
}
}
private void dgDatagrid_PreviewMouseRightButtonDown(object sender,
System.Windows.Input.MouseButtonEventArgs e)
{
isRightClick = true;
}
Acho que isto será mais conveniente do que adicionar um atraso de tarefa ou algo parecido.
0
Author: Raviraj Palvankar, 2017-05-02 05:03:29