【发布时间】:2016-03-29 01:09:59
【问题描述】:
我正在使用框架catel,更新计时器中的值发送事件以表明内容已更新,但未发生任何更改。列表框中的数据更新成功。有什么问题? XAML:
<TextBlock Margin="2,0" VerticalAlignment="Center" Text="{Binding NowPlayingTime}" />
C#:
void _dispatcherTimer_Tick(object sender, EventArgs e)
{
AboveTime = string.Format("{0:hh:mm:ss}", TimeSpan.FromMilliseconds(_controlPlayer.NaturalDurationTimeSpan));
NowPlayingTime = string.Format("{0:hh:mm:ss}", TimeSpan.FromMilliseconds(_controlPlayer.NowPlayingPosition));
}
public string NowPlayingTime
{
get { return _nowPlayingTime; }
private set
{
_nowPlayingTime = value;
RaisePropertyChanged(() => NowPlayingTime);
}
}
【问题讨论】:
-
如果你给NowPlayingTime设置了一些初始值,它会显示在TextBlock上吗?
-
不,即使我发送静态文本,此文本也不会更新。
-
这意味着它是一个绑定错误。你能检查你的输出窗口是否有任何绑定错误
-
我一直使用 OnPropertyChanged,它将属性名称作为字符串。你能包括你正在使用的 RaisePropertyChanged 的实现吗?但话又说回来,如果列表框中的数据得到更新,那么 RaisePropertyChanged 工作正常。
-
@Birdy 如果您找到答案,我建议您使用答案更新您的问题或使用该代码单独发布答案,以便未来的读者可以看到它(cmets 可以隐藏)