WPF: Покажите Изменение Свойства, не реализовывая интерфейс INotifyPropertyChanged

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

Проблема, которую я имею прямо сейчас, состоит в том, что это значение свойства получено от закрытой платформы. Это означает, я могу только опросить значение, но нет никакого события изменения, на которое я могу подписаться.

Моя первая мысль состояла в том, чтобы создать отдельный поток, который периодически (говорят, что каждые 10 миллисекунд) опрашивает значение и создает событие, когда значение изменилось. Но это походит на излишество мне.

Таким образом, мой вопрос: существует ли функция в WPF для отображения изменяющихся значений, где INotifyPropertyChanged не является опцией? Своего рода механизм опроса, возможно? В противном случае, как Вы занялись бы этой проблемой?

Спасибо за внимание.

5
задан Alberto Solano 5 February 2014 в 14:16
поделиться

2 ответа

Если значение поступает где-то, не сможете контролировать, создайте «ViewModel» для рассматриваемого объекта и обрабатывать это самостоятельно.

public class ClosedSourceObjectViewModel : ViewModelBase
{
    private ClosedSourceObject ClosedSourceObject
    {
        get;
        set;
    }

    public bool SomeProperty
    {
        get { return this.ClosedSourceObject.SomeProperty; }
        set
        {
            if (value != this.ClosedSourceObject.SomeProperty)
            {
                RaisePropertyChanging("SomeProperty");
                this.ClosedSourceObject.SomeProperty = value;
                RaisePropertyChanged("SomeProperty");
            }
        }
    }
}
4
ответ дан 15 December 2019 в 01:01
поделиться

Я согласен с @Alastair. Потому что

(1) Вы хотите получить значение из закрытого фреймворка, который не уведомляет вас об изменении свойств.
(2) Вы можете опросить значение, но не хотите этого делать!

Я не думаю, что будет какой-нибудь другой способ сделать это :(

0
ответ дан 15 December 2019 в 01:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: