在Singleton中的静态属性上实现INotifyPropertyChanged?

时间:2013-10-03 16:25:56

标签: wpf

WPF的新手,并努力解决以下问题:

StatusBarItem显示一个简单的计时器(自加载窗口后的秒数)。绑定源属性和后备DispatcherTimer位于Singleton类中并且是静态的,这似乎是合理的,因为每个应用程序只有一个StatusBar。该类实现了INotifyPropertyChanged,因为它是对StatusBarItem的单向绑定。

WPF 4.5可以使用静态事件(see here)绑定到静态属性。

这不起作用,因为INotifyPropertyChanged不是静态的,所以事件不能是静态的,所以属性不能是静态的。解决方案是保持计时器静态,但使属性不是静态的。

如果它们不能依赖于INotifyPropertyChanged,那么在4.5中引入绑定到静态属性有什么意义呢?是否有静态版本的INotifyPropertyChanged?我一定错过了什么,但不知道是什么。谢谢你的任何澄清。

3 个答案:

答案 0 :(得分:1)

您不需要实现INotifyPropertyChanged接口,只需声明文档中的事件。

答案 1 :(得分:1)

是的,您遗漏了某些内容,您链接的页面描述了如何定义通知WPF静态属性已更改的事件。

对于名为MyProperty的属性,要么创建一个事件,如下所示

public static event EventHandler MyPropertyChanged; 

或称为

的通用事件
public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged

InotifyPropertyChanged仅用于静态属性,仅用于上述命名事件之一

答案 2 :(得分:0)

您可以将静态属性包装在实例属性中,但设计是真正的问题。为什么在单例中有静态属性?根据定义,进程中应该只有一个单例实例,这使得静态属性(除了用于保存单例实例的静态属性)毫无意义。