private async void ButtonDeletar_ClickAsync(object sender, RoutedEventArgs e)
        {
            MessageBoxResult resultado = MessageBox.Show("Tem certeza que deseja excluir o Cliente?", "Deletar Cliente", MessageBoxButton.YesNo, MessageBoxImage.Information);

            if (resultado == MessageBoxResult.Yes)
            {
                try
                {
                    using (AlexProva dbAlexProva = new AlexProva())
                    {
                        var clienteSelecionado = (Cliente)TabelaView.SelectedCells[0].Item;

                        Cliente clienteaDeletar = await dbAlexProva.Clientes.FindAsync(clienteSelecionado.Id);

                        dbAlexProva.Contatos.RemoveRange(clienteaDeletar.Contato); //Remove os contatos relacionados
                        dbAlexProva.Clientes.Remove(clienteaDeletar);              //Remove o cliente


                        await dbAlexProva.SaveChangesAsync();

                        MessageBox.Show("O Cliente foi Deletado", "Cliente Deletado", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Erro", MessageBoxButton.OK, MessageBoxImage.Error);
                }

                this.Hide();
                TelaPrincipalClientes telaPrincipalClientes = new TelaPrincipalClientes();
                telaPrincipalClientes.Show();
            }
        }
        private void ButtonCancelar_Click(object sender, RoutedEventArgs e)
        {
            MessageBoxResult resultado = MessageBox.Show("Tem certeza que deseja cancelar o Cadastro?", "Cancelar Cadastro", MessageBoxButton.YesNo, MessageBoxImage.Information);

            if (resultado == MessageBoxResult.Yes)
            {
                this.Hide();
                TelaPrincipalClientes telaPrincipalClientes = new TelaPrincipalClientes();
                telaPrincipalClientes.Show();
            }
        }
        private async void ButtonCadastrar_ClickAsync(object sender, RoutedEventArgs e)
        {
            try
            {
                using (AlexProva dBalexProva = new AlexProva())
                {
                    if (clienteSelecionado == null) //Valida se é uma nova criação de cliente ou se é uma atualização
                    {
                        Endereco endereco = new Endereco
                        {
                            Rua         = TextRua.Text.Trim(),
                            Numero      = int.Parse(TextNumero.Text.Trim()),
                            Cep         = TextCEP.Text.Trim(),
                            Complemento = TextComplemento.Text.Trim(),
                            Bairro      = TextBairro.Text.Trim(),
                            Cidade      = TextCidade.Text.Trim(),
                            Estado      = TextEstado.Text.Trim(),
                        };

                        Contato contato = new Contato
                        {
                            Nome   = TextContatoNome.Text.Trim(),
                            Numero = TextContatoNum.Text.Trim(),
                            Tipo   = ComboboxTipo.Text.Trim(),
                        };

                        List <Contato> listContatos = new List <Contato>
                        {
                            contato
                        };

                        Cliente cliente = new Cliente
                        {
                            Nome     = TextNome.Text.ToString(),
                            Idade    = int.Parse(TextIdade.Text),
                            Endereco = endereco,
                            Contato  = listContatos,
                        };

                        dBalexProva.Clientes.Add(cliente);
                        await dBalexProva.SaveChangesAsync();


                        MessageBox.Show("Cliente Cadastrado.", "Cliente Cadastrado", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    else
                    {
                        var clienteBanco = await dBalexProva.Clientes.Where <Cliente>(x => x.Id.ToString() == clienteSelecionado.Id.ToString()).FirstOrDefaultAsync();

                        clienteBanco.Nome                 = TextNome.Text.Trim();
                        clienteBanco.Idade                = int.Parse(TextIdade.Text.Trim());
                        clienteBanco.Endereco.Cep         = TextCEP.Text.Trim();
                        clienteBanco.Endereco.Rua         = TextRua.Text.Trim();
                        clienteBanco.Endereco.Numero      = int.Parse(TextNumero.Text.Trim());
                        clienteBanco.Endereco.Complemento = TextComplemento.Text.Trim();
                        clienteBanco.Endereco.Bairro      = TextBairro.Text.Trim();
                        clienteBanco.Endereco.Cidade      = TextCidade.Text.Trim();
                        clienteBanco.Endereco.Estado      = TextEstado.Text.Trim();

                        await dBalexProva.SaveChangesAsync();

                        MessageBox.Show("Cliente Alterado com sucesso", "Cliente Alterado", MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Erro", MessageBoxButton.OK, MessageBoxImage.Error);
            }

            TelaPrincipalClientes TelaPrincipal = new TelaPrincipalClientes();

            TelaPrincipal.Show();
            this.Close();
        }