【发布时间】:2018-12-07 13:56:32
【问题描述】:
我有课
class Export{
TimeSpan SlowDownPosition{get; set;}
}
现在这个类是我的用户控件的依赖属性。并且SlowDownPosition 绑定到一个TextBlock。我有一个按钮可以将值重置为zero。但这样做不会更新 UI,因为 SlowDownPosition 是依赖属性的一个属性。
<TextBlock Text="{Binding ElementName=TagMetaDataControl,Path=Export.SlowDownPosition}" />
<Button Content="X" Click="ResetAutoSlowPosition" />
关于背后的代码
private void ResetAutoSlowPosition(object sender, RoutedEventArgs e)
{
Export.SlowDownPosition = TimeSpan.Zero;
}
有没有办法在不使SlowDownPosition 本身成为依赖属性的情况下更新 UI?
【问题讨论】:
-
你使用了 [inotifypropertychanged] 标签,所以你知道它,但你没有在 Export 类中实现它。为什么?
-
@ASh 因为它是一个数据模型;在用户控件上实现它似乎不是正确的方法
-
当不直接将控件绑定到数据模型时。介绍一个实现 INPC 的视图模型
-
@ASh yah 这就是我可能会采用的方法,这是一个非常简单的控件,我想我可以在没有任何视图模型的情况下做到这一点
-
“有没有办法在不使 SlowDownPosition 本身成为依赖属性的情况下更新 UI?”当然,只需让 Export 实现 INotifyPropertChanged 并在 SlowDownPosition 更改时触发 PropertyChanged 事件。然后将触发与
Export.SlowDownPosition的绑定,并且 UI 会神奇地更新。
标签: c# wpf dependency-properties inotifypropertychanged