【发布时间】:2013-08-12 18:47:09
【问题描述】:
我在 xaml 中有这样的东西:
<Button Content="{Binding MyStopwatch.IsRunning,
Converter={StaticResource BoolToStr}}"/>
当IsRunning 为假时,我需要显示开始,当IsRunning 为真时,我需要显示停止。
我对转换器或绑定本身没有任何问题。
我在刷新 IsRunning 属性时遇到问题。
当IsRunning 属性更改而程序正在运行时 - 它不会更改启动/停止文本。
我知道如何在我自己的属性上实现INotifyPropertyChange。
但我不知道如何在IsRunning 上实现(类似的)属性更改
【问题讨论】:
-
绑定到 CLR 属性时无法收到更改通知,它必须是依赖属性或者类应该实现 INotifyPropertyChanged。
-
将您的秒表包装到一个实现 INotifyPropertyChanged 的类中,并在调用 Start/Stop 后更改 IsRunning。
-
@Islam - 这根本不是真的。我们可以在不实现 INPC 的情况下绑定到 CLR 属性。唯一的问题是,在属性发生任何变化时,GUI 上的绑定都不会刷新。
-
@Rohit 这就是我的意思!编辑了评论。
-
但是在这种情况下,在
MyStopwatch上提高PropertyChanged就可以了,因为它是绑定本身的一部分。