private void Buscar() { if (String.IsNullOrWhiteSpace(txtID.Text)) { itens.Clear(); //dtaServicos.Items.Clear();// limpe apenas a lista, não precisa limpar o datagrid, nem pode, da erro foreach (Servico servico in ServicoDAO.Listar) { itens.Add(new { //id para poder buscar Id = servico.Id.ToString(), Nome = servico.Nome, Descricao = servico.Descricao, Duracao = servico.Duracao, TipoDeServico = servico.TipoServico.Nome, Preco = servico.Preco.ToString("C2", CultureInfo.GetCultureInfoByIetfLanguageTag("pt-BR")) }); } dtaServicos.ItemsSource = itens; dtaServicos.Items.Refresh(); //não gosto de ficar colocando um monte de else, se for vários vai encadeando e jogando tudo pro lado... return; } s = ServicoDAO.BuscarPorID(Convert.ToInt32(txtID.Text)); if (s == null) { MessageBox.Show($"Servico de ID {txtID.Text} não encontrado.", "Pet Shop", MessageBoxButton.OK, MessageBoxImage.Information); return; } txtNome.Text = s.Nome; txtDescricao.Text = s.Descricao; cboDuracao.SelectedIndex = cboDuracao.Items.IndexOf(s.Duracao + " Minutos"); cboTipo.SelectedIndex = cboTipo.Items.IndexOf(s.TipoServico); txtPreco.Text = s.Preco.ToString(); btnAlterar.IsEnabled = btnRemover.IsEnabled = true; btnCadastrar.IsEnabled = btnBuscar.IsEnabled = txtID.IsEnabled = false; }