我对观察变量位于 MainWindow.cs 中的数据绑定无法正常工作感到困惑,尽管在其他类中可以正常工作。我发现,问题是由这段代码的不同行为引起的:
public bool AccountIsSelected { get { return accountIsSelected; } set { accountIsSelected = value; OnAccountIsSelectedChanged(); } }
private bool accountIsSelected;
public event EventHandler AccountIsSelectedChanged;
public void OnAccountIsSelectedChanged()
{
if (AccountIsSelectedChanged != null) //this stays null in MainWindow
AccountIsSelectedChanged(this, EventArgs.Empty);
}
MainWindow 中的某些按钮 IsEnabled 属性绑定到变量 AccountIsSelected 。 如果将变量放置在 MainWindow 以外的其他类中,则该类将在 MainWindow 中实例化,并且类实例为设置为 DataContext ,按钮 IsEnabled 属性的绑定可以正常工作,因为 AccountIsSelectedChanged 不为空。 但是,如果变量位于 MainWindow 中(并且 DataContext 设置为 this) ,由于 AccountIsSelectedChanged 始终为空,因此数据绑定不起作用。
我需要观察到的变量位于MainWindow中,如何使通知起作用?
提前感谢您的帮助...
答案 0 :(得分:0)
您应该在MainWindow类中实现INotifyPropertyChanged接口,以使更改通知生效。
有关如何实现此接口的在线示例很多。
public partial class MainWindow : Window, INotifyPropertyChanged
{
}