我有一个名为Time的TimeSpan变量,我成功在XAML中进行了绑定(bind)。这是我的代码:
...
<TextBlock Grid.Column="2" Text="{Binding Time, StringFormat='{}{0:hh:mm}'}" />
...
值现在可以正确显示,但是格式仍然是hh:mm:ss。我试图摆脱秒,只显示小时和分钟,但是由于某种原因,我对StringFormat所做的更改未得到考虑,并且我总是得到相同的hh:mm:ss格式。你能给些建议么?
谢谢!
编辑:
从下面的评论来看,我绑定(bind)的时间似乎不是TimeSpan格式,因为StringFormat似乎正确,但是显示的值是错误的。
在自定义类Record中,Time变量的定义如下:
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>
最佳答案
您可以使用以下StringFormat
获得该输出:
<TextBlock Text="{Binding Time, StringFormat={}{0:hh}:{0:mm}, FallbackValue=00:00}" />
更新>>>
我要说明的第一点是
hh
将以12小时格式显示小时,如果要使用24小时格式,则应使用HH
。我想说的第二点是,您对自己在应用程序中所做的事情显然感到困惑。您看到的带有秒值的时间值不是来自这个
TextBlock
,也可能不是来自您的那个。我认为您需要仔细阅读自己的代码...您必须具有另一个TextBlock
或其他内容。关于c# - 在XAML中用于绑定(bind)TimeSpan的StringFormat不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20192430/