В моем приложении WPF у меня есть булево свойство, которое я хотел бы показать пользователю (например, с флажком только для чтения). Обычно я реализовал бы INotifyPropertyChanged, таким образом, WPF может действовать на это и изменить флажок соответственно.
Проблема, которую я имею прямо сейчас, состоит в том, что это значение свойства получено от закрытой платформы. Это означает, я могу только опросить значение, но нет никакого события изменения, на которое я могу подписаться.
Моя первая мысль состояла в том, чтобы создать отдельный поток, который периодически (говорят, что каждые 10 миллисекунд) опрашивает значение и создает событие, когда значение изменилось. Но это походит на излишество мне.
Таким образом, мой вопрос: существует ли функция в WPF для отображения изменяющихся значений, где INotifyPropertyChanged не является опцией? Своего рода механизм опроса, возможно? В противном случае, как Вы занялись бы этой проблемой?
Спасибо за внимание.
Если значение поступает где-то, не сможете контролировать, создайте «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");
}
}
}
}
Я согласен с @Alastair. Потому что
(1) Вы хотите получить значение из закрытого фреймворка, который не уведомляет вас об изменении свойств.
(2) Вы можете опросить значение, но не хотите этого делать!
Я не думаю, что будет какой-нибудь другой способ сделать это :(