在我的WPF应用程序中,我有一个布尔属性,我想向用户显示(例如,使用只读复选框)。通常我会实现INotifyPropertyChanged,因此WPF可以对此进行操作并相应地更改复选框。
我现在遇到的问题是从封闭的框架中检索此属性值。这意味着,我只能轮询该值,但没有我可以订阅的更改事件。
我的第一个想法是创建一个单独的线程,它周期性地(例如每10毫秒)轮询一次值并在值发生变化时创建一个事件。但这似乎对我来说太过分了。
所以我的问题是:WPF中是否有一个功能用于显示不能选择INotifyPropertyChanged的更改值?可能是某种民意调查机制?如果没有,你会如何解决这个问题?
感谢您的时间。
答案 0 :(得分:4)
如果值来自您无法控制的某个地方,请为相关对象创建“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");
}
}
}
}
答案 1 :(得分:0)
我同意@Alastair。因为
(1)您想要从一个没有通知您房产变更的封闭框架中检索价值 (2)您可以轮询该值,但您不想这样做!
我认为没有其他办法可以做到这一点:(