本文介绍了如何在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格式时间跨度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-11 21:44