【发布时间】:2013-12-10 03:23:21
【问题描述】:
我有一个名为 Time 的 TimeSpan 变量,我成功地在 XAML 中绑定了它。这是我的代码:
...
<TextBlock Grid.Column="2" Text="{Binding Time, StringFormat='{}{0:hh:mm}'}" />
...
现在可以正确显示值,但是格式仍然是 hh:mm:ss。我试图摆脱秒,只显示小时和分钟,但由于某种原因,我对 StringFormat 所做的更改没有被考虑在内,我总是得到相同的 hh:mm:ss 格式。可以请教吗?
谢谢!
编辑:
从下面的 cmets 来看,我绑定的时间似乎不是 TimeSpan 格式,因为 StringFormat 似乎是正确的,但显示的值是错误的。 Time变量在自定义类Record中定义如下:
private TimeSpan time;
public TimeSpan Time
{
get { return time; }
set { time = value; }
}
在我的代码中,我定义了一个可观察的集合:
ObservableCollection<Record> records = new ObservableCollection<Record>();
集合是填充的然后我有:
listBoxRecords.ItemsSource = this.records;
这是完整的 XAML,请记住,其余字段已正确填充,只有 TimeSpan 给我带来了麻烦:
<ListBox Margin="0,44,0,58" Name="listBoxRecords" ItemsSource="{Binding records}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Margin="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="120" />
<ColumnDefinition Width="85" />
<ColumnDefinition Width="55" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Date, StringFormat='{}{0:dd-MM-yyyy HH:mm}'}" />
<TextBlock Grid.Column="1" Text="{Binding Type }" />
<TextBlock Grid.Column="2" Text="{Binding Time, StringFormat='{}{0:hh\\:mm}'}" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
【问题讨论】:
-
如果您的问题现在已经解决,请按照本网站的惯例accept an answer。
-
问题还没有解决,否则我很乐意接受答案。
-
当您尝试我的回答时,会发生什么(请记住我的评论,即您看到的内容不是来自我的
StringFormat)?在一个新项目中尝试一下,你会发现它工作得很好。