Привязка данных в wpf с выражением в геттере - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть свойство в моей модели, которое имеет геттер

public boolean Status {
    get {
        return 1==2;
    }
}

и метку

<Label Content="{Binding Path=Status, Mode=OneWay}" />

Я хочу отслеживать статус.Теперь при изменении значения статуса пользовательский интерфейс не обновляется со значением.

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Предполагая, что модель представления уже реализует INotifyPropertyChanged, вы должны вызвать событие PropertyChanged, если хотите, чтобы пользовательский интерфейс перечитал значение свойства.Не имеет значения, является ли это свойство только для получения или get / set.

Поскольку это только для получения, вам нужно вызвать OnPropertyChanged после изменения чего-либо, что влияет на результат выражения геттера:

private int a;
private int b;

public bool Status => a == b;

private void DoSomething()
{
    a = ...;
    b = ...;

    // ...

    OnPropertyChanged(nameof(Status));
}
0 голосов
/ 06 декабря 2018

Вам нужно будет сделать две вещи:

  1. Реализовать интерфейс INotifyPropertyChanged в классе, который содержит свойство Status.

  2. Вызовите PropertyChangedобработчик и вызовите этот метод в установщике свойства Status, которое вы будете реализовывать как часть INotifyPropertyChanged - если вы этого не сделаете, пожалуйста, Google, и вы получите кусок кода - он в основном уведомляет пользовательский интерфейс, чтосвойство изменилось.

  3. Если свойство Status имеет значение только get, вам придется вызывать метод PropertyChanged после того, как вы узнаете, что статус был обновлен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...