如何在wpf(DataGrid)中格式化TimeSpan?

3

我在SqlCe中保存了一个TimeSpan(时间间隔)的刻度值,当我在DataGrid中加载数据时,我想将此值格式化为HH:MM:SS。我使用以下方法进行尝试:

<DataGridTextColumn Binding="{Binding tiempo, StringFormat={}{0:hh':'mm':'ss}, TargetNullValue=' --- '}"  Width="80" Header="Tiempo"/>

但是DataGrid显示的是'hh:mm:ss'而不是值。
我还尝试了其他模式,例如StringFormat="hh\:mm\:ss"
有什么想法吗?
谢谢!对我的糟糕英语感到抱歉!

不确定您是否可以在绑定中使用String.Format。但是您可以通过使用“ValueConverter”轻松实现此目标。请查看此教程 - Arian Motamedi
@programmer93,那是StringFormat属性,而不是String.Format方法。 - Clemens
2个回答

5

您可以使用双反斜杠来编写:

<DataGridTextColumn Binding="{Binding tiempo, StringFormat=hh\\:mm\\:ss}"/>

或者像这样使用单个反斜杠:

<DataGridTextColumn>
    <DataGridTextColumn.Binding>
        <Binding Path="tiempo" StringFormat="hh\:mm\:ss"/>
    </DataGridTextColumn.Binding>
</DataGridTextColumn>

尽管已经是默认格式,但仍需注意。
<DataGridTextColumn Binding="{Binding tiempo}"/>

应该也没问题。

还可以参考这个答案,其中有更多的例子。


相同的结果,数据网格显示 hh:mm:ss 而不是格式化的值。 - Roomm
我甚至尝试使用DataGridTextColumn,它对我有效。您能展示一下“tiempo”属性的声明吗? - Clemens

0

我解决了这个问题!在数据库中,我将“tiempo”存储为bigint,所以我将其改为nvarchar并进行了一些修复,它现在可以工作。 感谢大家!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接