当观察到的变量位于MainWindow.cs

时间:2018-11-16 18:19:34

标签: c# wpf data-binding

我对观察变量位于 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中,如何使通知起作用?

提前感谢您的帮助...

1 个答案:

答案 0 :(得分:0)

您应该在MainWindow类中实现INotifyPropertyChanged接口,以使更改通知生效。

有关如何实现此接口的在线示例很多。

public partial class MainWindow : Window, INotifyPropertyChanged
{
}