WPF:显示属性更改而不实现INotifyPropertyChanged接口

时间:2010-01-30 13:07:31

标签: c# wpf inotifypropertychanged

在我的WPF应用程序中,我有一个布尔属性,我想向用户显示(例如,使用只读复选框)。通常我会实现INotifyPropertyChanged,因此WPF可以对此进行操作并相应地更改复选框。

我现在遇到的问题是从封闭的框架中检索此属性值。这意味着,我只能轮询该值,但没有我可以订阅的更改事件。

我的第一个想法是创建一个单独的线程,它周期性地(例如每10毫秒)轮询一次值并在值发生变化时创建一个事件。但这似乎对我来说太过分了。

所以我的问题是:WPF中是否有一个功能用于显示不能选择INotifyPropertyChanged的更改值?可能是某种民意调查机制?如果没有,你会如何解决这个问题?

感谢您的时间。

2 个答案:

答案 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)您可以轮询该值,但您不想这样做!

我认为没有其他办法可以做到这一点:(