Активация кнопки сохранения c # / wpf - PullRequest
0 голосов
/ 28 января 2019

Как я могу убедиться, что, как только в текстовом поле произойдет изменение, кнопка сохранения будет включена?или нажав кнопку «Редактировать» (создав, таким образом, кнопку), приложение позволяет редактировать и, таким образом, включить кнопку, и она уже была активирована в случае вставки или удаления.

это изображение app

Вот код:

public GerenciarGenericoViewModel()
        {
            InserirProdutoCommand = new RelayCommand(InserirProduto);
            ExcluirProdutoCommand = new RelayCommand(ExcluirProduto, CanExcluirProduto);

            InserirUnidadeCommand = new RelayCommand(InserirUnidade);
            ExcluirUnidadeCommand = new RelayCommand(ExcluirUnidade, CanExcluirUnidade);

            InserirEmpresaCommand = new RelayCommand(InserirEmpresa);
            ExcluirEmpresaCommand = new RelayCommand(ExcluirEmpresa, CanExcluirEmpresa);

            InserirOperadorCommand = new RelayCommand(InserirOperador);
            ExcluirOperadorCommand = new RelayCommand(ExcluirOperador, CanExcluirOperador);

            SalvarCommand = new RelayCommand(Salvar, CanSalvar);
            CancelarCommand = new RelayCommand(Cancelar);

            ListaProdutos = new ObservableCollection<Produto>(ProdutosAccess.GetProdutos());
            ListaUnidades = new ObservableCollection<UnidadeMedida>(ProdutosAccess.GetUnidadesMedida());
            ListaEmpresas = new ObservableCollection<Empresa>(ProdutosAccess.GetEmpresas());
            ListaOperadores = new ObservableCollection<Operador>(ProdutosAccess.GetOperadores());

        }

        public RelayCommand InserirProdutoCommand { get; }
        public RelayCommand ExcluirProdutoCommand { get; }

        public RelayCommand InserirUnidadeCommand { get; }
        public RelayCommand ExcluirUnidadeCommand { get; }

        public RelayCommand InserirEmpresaCommand { get; }
        public RelayCommand ExcluirEmpresaCommand { get; }

        public RelayCommand InserirOperadorCommand { get; }
        public RelayCommand ExcluirOperadorCommand { get; }

        int check = 0;

        public RelayCommand SalvarCommand { get; }
        public RelayCommand CancelarCommand { get; }

        public ObservableCollection<Produto> ListaProdutos { get; }
        public ObservableCollection<UnidadeMedida> ListaUnidades { get; }
        public ObservableCollection<Empresa> ListaEmpresas { get; }
        public ObservableCollection<Operador> ListaOperadores { get; }

        private Produto _produtoSelecionado;
        public Produto ProdutoSelecionado
        {
            get => _produtoSelecionado;
            set => Set(() => ProdutoSelecionado, ref _produtoSelecionado, value);
        }

        private UnidadeMedida _unidadeSelecionada;
        public UnidadeMedida UnidadeSelecionada
        {
            get => _unidadeSelecionada;
            set => Set(() => UnidadeSelecionada, ref _unidadeSelecionada, value);
        }

        private Empresa _empresaSelecionada;
        public Empresa EmpresaSelecionada
        {
            get => _empresaSelecionada;
            set => Set(() => EmpresaSelecionada, ref _empresaSelecionada, value);
        }

        private Operador _operadorSelecionado;
        public Operador OperadorSelecionado
        {
            get => _operadorSelecionado;
            set => Set(() => OperadorSelecionado, ref _operadorSelecionado, value);
        }

        public void InserirProduto()
        {
            ListaProdutos.Add(new Produto());
            check++;
        }

        public void ExcluirProduto()
        {
            ListaProdutos.Remove(ProdutoSelecionado);
            check++;
        }

        public bool CanExcluirProduto()
        {
            return ProdutoSelecionado != null;
        }

        public void InserirUnidade()
        {
            ListaUnidades.Add(new UnidadeMedida());
            check++;
        }

        public void ExcluirUnidade()
        {
            ListaUnidades.Remove(UnidadeSelecionada);
            check++;
        }

        public bool CanExcluirUnidade()
        {
            return UnidadeSelecionada != null;
        }

        public void InserirEmpresa()
        {
            ListaEmpresas.Add(new Empresa());
            check++;
        }

        public void ExcluirEmpresa()
        {
            ListaEmpresas.Remove(EmpresaSelecionada);
            check++;
        }

        public bool CanExcluirEmpresa()
        {
            return EmpresaSelecionada != null;
        }

        public void InserirOperador()
        {
            ListaOperadores.Add(new Operador());
            check++;
        }

        public void ExcluirOperador()
        {
            ListaOperadores.Remove(OperadorSelecionado);
            check++;
        }

        public bool CanExcluirOperador()
        {
            return OperadorSelecionado != null;
        }

        public void Salvar()
        {
            var listaProdutos = ListaProdutos.ToList();
            var listaUnidades = ListaUnidades.ToList();
            var listaEmpresas = ListaEmpresas.ToList();
            var listaOperadores = ListaOperadores.ToList();

            listaProdutos = listaProdutos.Where(x => !string.IsNullOrWhiteSpace(x.Descricao)).ToList();
            listaUnidades = listaUnidades.Where(x => !string.IsNullOrWhiteSpace(x.Descricao)).ToList();
            listaEmpresas = listaEmpresas.Where(x => !string.IsNullOrWhiteSpace(x.Descricao)).ToList();
            listaOperadores = listaOperadores.Where(x => !string.IsNullOrWhiteSpace(x.Nome)).ToList();

            ProdutosAccess.SetListProdutos(listaProdutos);
            ProdutosAccess.SetListUnidades(listaUnidades);
            ProdutosAccess.SetListEmpresas(listaEmpresas);
            ProdutosAccess.SetListOperadores(listaOperadores);

            MessageBox.Show(messageBoxText: "Dados salvos com sucesso!",
                           caption: "Gerenciar Dados", button: MessageBoxButton.OK,
                           icon: MessageBoxImage.Information);

            Sair();
        }

        public bool CanSalvar()
        {
            if (check == 0)
            {
                return false;
            }
            else
            {
                return true;
            }
        }

        public void Cancelar()
        {
            Sair();
        }

        public void Sair()
        {
            Navigator.CloseWindowByDataContext(this);
        }
    }

1 Ответ

0 голосов
/ 28 января 2019

Как уже упоминалось @BradleDotNET, просто установите UpdateSourceTrigger внутри вашей привязки TextBox Text к PropertyChanged, и он должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...