【问题标题】:Binding text at a textblock is not working在文本块上绑定文本不起作用
【发布时间】: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 可以隐藏)

标签: c# wpf xaml binding catel


【解决方案1】:

找到问题的解决方案,如果您使用此代码,一切都会更新并成功运行。

private void _dispatcherTimer_Tick(object sender, EventArgs e)
{
    AboveTime = string.Format("{0:hh\\:mm\\:ss}", _controlPlayer.NaturalDurationTimeSpan);
    NowPlayingTime = string.Format("{0:hh\\:mm\\:ss}", _controlPlayer.NowPlayingPositionTimeSpan);
}

【讨论】:

    猜你喜欢
    • 2015-01-29
    • 2012-12-11
    • 1970-01-01
    • 2023-04-04
    • 2018-11-04
    • 2014-05-11
    • 2015-08-12
    • 2020-03-03
    • 2017-02-15
    相关资源
    最近更新 更多