在WPF中为Button绑定IsEnabled属性

时间:2018-05-14 13:27:56

标签: c# wpf binding

我有Button需要以编程方式启用/禁用。我希望使用绑定到bool来实现此目的。这是Button 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 PathBinding Source设置值,但没有任何效果。

请告知可能出现的问题。

2 个答案:

答案 0 :(得分:5)

然后......我认为一定是这样。

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));
        }
    }

答案 1 :(得分:4)

缺少两件事:

  1. IsLoggedIn属性应位于DataContext对象中。在MVVM中,这意味着它应该在视图模型中。
  2. DataContext应该实现INotifyPropertyChanged,以便在以编程方式更新属性时更改视图。