如何改进WPF倒数计时器的时间格式

时间:2016-01-04 02:55:13

标签: c# wpf datetime format

我在这里有一个倒数计时器,是否有任何改进它使它看起来更好的时间显示01:09而不是1:9在显示和00:09而不是00:9下面是代码我需要一些如何做的指导。

private int time = 120;
private System.Windows.Threading.DispatcherTimer Timer;

public MainWindow()
{
    InitializeComponent();
    Timer = new System.Windows.Threading.DispatcherTimer();
    Timer.Interval = new TimeSpan(0, 0, 1);
    Timer.Tick += Timer_tick;
    Timer.Start();

}


void Timer_tick(object sender, EventArgs e)
{
    if (time > 0)
    {
    if (time <= 10)
    {
        if (time % 2 == 0)
        {
            tbTime.Foreground = Brushes.Red;
        }
        else
        {
            tbTime.Foreground = Brushes.White;
        }


        time--;

        tbTime.Text = string.Format("00:0{0}:0{1}", time / 60, time % 60);

    }

    else
    {
        time--;
        tbTime.Text = string.Format("00:0{0}:{1}", time / 60, time % 60);


    }

    }
    else
    {
    Timer.Stop();
    }
}

2 个答案:

答案 0 :(得分:3)

如果您使用DateTime来表示“时间”,您可以轻松地将其显示为

persistAllSettings

如果你坚持使用整数,你可以改用:

time.ToString("hh:mm");

或使用Ian在答案中建议的“d2”

string.Format("00:{0:00}:{1:00}", time / 60, time % 60);

答案 1 :(得分:1)

您可能希望纯粹在xaml上处理格式并在viewmodel中使用timepan而不是datetime,从viewmodel绑定画笔可能也不错,除非您想使用带值转换器的触发器来检查TotalSeconds是偶数还是奇数。

<TextBlock Width="100" Height="24" ForeGround={Binding ForeBrush}>
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0:00}:{1:00;00}">
            <Binding Path="MyTimeSpan.Minutes"/>
            <Binding Path="MyTimeSpan.Seconds"/>
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>