本文介绍了如何在XAML格式时间跨度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图格式,它绑定到时间跨度
属性文本块。它的工作原理,如果属性的类型的DateTime
,但如果它是一个时间跨度
失败。我能得到它使用一个转换器完成。但我试图找出是否有任何的替代品。
样code:
公开时间跨度数值指明MyTime {搞定;组; } 公共窗口2()
{
的InitializeComponent();
数值指明MyTime = DateTime.Now.TimeOfDay;
的DataContext =这一点;
}
的XAML
< TextBlock的文本={结合数值指明MyTime,的StringFormat = HH:MM}/>
我期待的文本块,只显示小时和mintes。但它显示为:
解决方案
In .NET 3.5 you could use a MultiBinding instead
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}:{1}">
<Binding Path="MyTime.Hours"/>
<Binding Path="MyTime.Minutes"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
Update
To answer the comments.
To make sure you output 2 digits even if hours or minutes is 0-9 you can use {0:00} instead of {0}. This will make sure the output for the time 12:01 is 12:01 instead of 12:1.
If you want to output 01:01 as 1:01 use StringFormat="{}{0}:{1:00}"
And Conditional formatting can be used to remove the negative sign for minutes. Instead of {1:00} we can use {1:00;00}
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0:00}:{1:00;00}">
<Binding Path="MyTime.Hours" />
<Binding Path="MyTime.Minutes" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
这篇关于如何在XAML格式时间跨度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!