Привязка данных не работает правильно, когда наблюдаемая переменная находится в MainWindow.cs - PullRequest
0 голосов
/ 16 ноября 2018

Я не уверен, что привязка данных работает неправильно, когда наблюдаемая переменная находится в 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);
    }

Некоторые кнопки IsEnabled свойство в MainWindow привязано к переменной AccountIsSelected .Если переменная помещена в некоторый класс, отличный от MainWindow , этот класс создается в MainWindow , а экземпляр класса устанавливается как DataContext , привязка кнопок Свойство IsEnabled работает нормально, поскольку AccountIsSelectedChanged не равно нулю.Однако, если переменная помещена в MainWindow DataContext , установленный в this) , привязка данных не работает, поскольку AccountIsSelectedChanged остается всегда нулевым.

Мне нужно, чтобы наблюдаемая переменная находилась в MainWindow, как мне заставить работать уведомление?

Заранее благодарим за любую помощь ...

1 Ответ

0 голосов
/ 16 ноября 2018

Вы должны реализовать интерфейс INotifyPropertyChanged в классе MainWindow, чтобы сделать уведомление об изменениях эффективным.

Существует множество примеров того, как реализовать этот интерфейс.

public partial class MainWindow : Window, INotifyPropertyChanged
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...