c# - WPF:在不实现 INotifyPropertyChanged 接口(interface)的情况下显示属性更改

标签 c# wpf inotifypropertychanged

在我的 WPF 应用程序中,我有一个 bool 属性,我想向用户显示它(例如,带有一个只读复选框)。通常我会实现 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");
            }
        }
    }
}

关于c# - WPF:在不实现 INotifyPropertyChanged 接口(interface)的情况下显示属性更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2167943/

相关文章:

c# - C#中的外部IP地址

c# - WPF 在 MouseOver 上绘制边框

c# - ICommand MVVM 实现

c# - 使用具有多对一相关实体的 AutoMapper 的类型为 'System.StackOverflowException' 的未处理异常

c# - gridview的分页

c# - 更改 XAML 中的绑定(bind)值

wpf - 更改项目控件中选项卡项目的不透明度

vb.net - Prism MVVM 模式 : View is always one step behind on property change in ViewModel

c# - 内部对象属性更改时自动引发 PropertyChanged

c# - INotifyPropertyChanged 的​​不同实现方式有什么区别?