Свойство Bind IsEnabled для кнопки в WPF - PullRequest
0 голосов
/ 14 мая 2018

У меня есть Button, который необходимо включить / отключить программно. Я хочу добиться этого, используя привязку к bool. Вот кнопка XAML:

<Button x:Name="logInButton" Height="30" IsEnabled="{Binding IsLoggedIn}">
                            <Image Source="/images/img.png"></Image>
                        </Button>

Вот код, который называется:

        public MainWindow()
        {
            InitializeComponent();
            enabled = false;
        }
        private bool enabled;
        public bool IsLoggedIn
        {
            get
            {
                return enabled;
            }
            set
            {
                enabled = value;
            }
        } 

Значение свойства IsLoggedIn назначено правильно. Но IsEnabled не присваивается нужное мне значение. Например:
For example

Я попытался установить значение с помощью Binding Path и Binding Source, но ничего не работает.

Пожалуйста, сообщите, что может быть не так.

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Тогда ... Я думаю, должно быть так.

class Model : INotifyPropertyChanged
    {
        public bool enabled;
        public bool IsLoggedIn
        {
            get
            {
                return enabled;
            }
            set
            {
                enabled = value;
                OnPropertyChanged("IsLoggedIn");
            }
        }
        public event PropertyChangedEventHandler PropertyChanged;
        public void OnPropertyChanged([CallerMemberName]string property = "")
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(property));
        }
    }
0 голосов
/ 14 мая 2018

Отсутствуют две вещи:

  1. Свойство IsLoggedIn должно быть в объекте DataContext.В MVVM это означает, что оно должно быть в модели представления.
  2. DataContext должно реализовывать INotifyPropertyChanged, поэтому представление может измениться при программном обновлении свойства.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...