================================================
Como Manter Registro Selecionado após Atualizar GridView WPF
Publicado por Jovan Oliveira Neves em 3 dezembro 2013 às 13:19 em C# (Csharp)
Back to C# (Csharp) Discussions
Boa Tarde!
Responder até Jone Pólvora em 3 dezembro 2013 at 21:15
Você deve (antes de recarregar os dados no grid) guardar uma referência de um valor chave para o objeto que está selecionado no grid, e após preencher o grid, procurar no grid se ainda existe um objeto com aquele mesmo valor chave, percorrendo registro a registro,
e caso exista, selecioná-lo.
Isso é necessário porque no WPF, o grid utiliza instâncias de objetos que representam os dados, e a cada nova atualização do grid, os objetos antigos são descartados e novos objetos são renderizados, apesar de ser os "mesmos" registros no banco
de dados, porém, instâncias de objetos diferentes.
A lógica seria mais ou menos assim:
Antes de recarregar os dados do grid:
Pessoa pessoaSelecionada = grid.SelectedItem as Pessoa;
AtualizarGrid();
foreach (Pessoa item in grid.ItemsSource) {
if (item.Id == pessoaSelecionada.Id) {
grid.SelectedItem = item;
break;
}
}
Isso é um exemplo onde você popula uma lista de pessoas onde exista uma classe chamada Pessoa, e esta classe possua um campo chamado Id.
Tente adaptar o seu caso com esta idéia, mas não se prenda a isso.
Espero ter ajudado.
[]'s
================================================
[]'s,
Fabio I.