我有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
未分配我需要的值。例如:
我尝试使用Binding Path
和Binding Source
设置值,但没有任何效果。
请告知可能出现的问题。
答案 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)
缺少两件事:
IsLoggedIn
属性应位于DataContext
对象中。在MVVM中,这意味着它应该在视图模型中。DataContext
应该实现INotifyPropertyChanged
,以便在以编程方式更新属性时更改视图。