如何在特定时间间隔内提高PropertyChanged?

时间:2013-11-25 12:41:04

标签: c# .net wpf wpf-controls

在WPF应用程序中,我需要以特定的时间间隔刷新所有组件的UI。 我需要知道什么是最简单的方法。

  • 我的问题:如何提升OnPropertyChanged?

  • 你知道更好的approch吗?

如果可能,请提供代码示例,谢谢

namespace MyClient.Common
{

    public abstract class BindableBase : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        protected bool SetProperty<T>(ref T storage, T value, /*[CallerMemberName]*/ String propertyName = null)
        {
            if (object.Equals(storage, value)) return false;

            storage = value;
            this.OnPropertyChanged(propertyName);
            return true;
        }

        protected void OnPropertyChanged(/*[CallerMemberName]*/ string propertyName = null)
        {
            var eventHandler = this.PropertyChanged;
            if (eventHandler != null)
            {
                eventHandler(this, new PropertyChangedEventArgs(propertyName));
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

绝对最好的方法是不要刷新控件:-)正如我看到你已经实现了INotifyPropertyChanged接口,你实现一个简单的MVVM模式并不太远。如果您这样做,用户界面将自动更新视图模型中的事件,并且您的控件应该始终是最新的。

这是关于如何开始使用MVVM的许多参考资料之一:http://www.markwithall.com/programming/2013/03/01/worlds-simplest-csharp-wpf-mvvm-example.html

我自己刚刚穿过同一个jurney,一旦掌握了它,我就意识到这一切是多么干净和美好。

在某些情况下,您必须手动调用OnPropertyChanged,例如,如果从其他成员或外部因素推断出属性。然后你只需要调用OnPropertyChanged(“PropertyName”)。