Как отключить кнопку в wpf - PullRequest
0 голосов
/ 12 ноября 2018

Моя кнопка привязана к моей ViewModel со свойством IsEnabled, чтобы иметь значение true или false из моей ViewModel, но она не отключается, когда я устанавливаю свойство привязанного к false.

Мой XAML

<Button x:Name="buttonSubmit" Margin="20,10,0,0" Height="30" Width="90" Content="Login" IsEnabled="{Binding IsLoginEnabled, Mode=TwoWay}" Command="{Binding LoginCommand}" CommandParameter="{Binding ElementName=txtPassword}"/>

ViewModel

public LoginViewModel(ILoginAuth loginAuth)
    {
        this.IsLoginEnabled = true;
        this.LoginCommand = new DelegateCommand(this.LoginUser);
    }

 public async void LoginUser()
    {
            this.IsLoginEnabled = false;
    }

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Обычно вы не связываете IsEnabled, когда вы также связываете свойство Command. Метод CanExecute объекта ICommand контролирует, включена кнопка или нет:

public DelegateCommand LoginCommand { get; }
private bool canLogin = true;

public LoginViewModel(ILoginAuth loginAuth)
{
    LoginCommand = new DelegateCommand(LoginUser, () => canLogin);
}

public void LoginUser()
{
    canLogin = false;
    LoginCommand.RaiseCanExecuteChanged();
}
0 голосов
/ 12 ноября 2018

Моим первым предположением будет то, что вы не реализуете INotifyPropertyChanged в своей ViewModel.

Проверьте эти ссылки:

Объяснить INotifyPropertyChanged In WPF - MVVM

Как: реализовать интерфейс INotifyPropertyChanged

Вам необходимо реализовать интерфейс, чтобы ViewModel информировал View о том, что что-то изменилось, и соответствующим образом обновил пользовательский интерфейс.

...