WPF:输入持续时间(hh:mm:ss)

时间:2017-01-29 10:42:14

标签: wpf xamarin mvvm

我想允许用户输入持续时间。 如果可能,我希望将输入绑定到一个整数属性,该属性表示以秒为单位的值。输入应该形成如下:“HH:mm:ss”。

我在ViewModel中有这段代码:

private int _duration;

public int duration
{
  get { return _duration; }
  set
  {
    if (_duration == value)
      return;
    _duration = value;
    RaisePropertyChanged(() => duration);
  }
}

我的XAML:

<Textbox Text="{Binding duration, StringFormat=HH:mm:ss}"/>

但这不起作用。我可以输入任何类型的字符串(不仅仅是数字),并且格式不受尊重。

PS:我的项目是一个Xamarin Forms项目,但我认为这是一回事。

1 个答案:

答案 0 :(得分:1)

使用TimeSpan代替int(如何:TimeSpan.FormSecond(second))。

VM:

void StartTimer(TimeSpan span)
{
    Duration = span;
    // Tick for each Seconds
    Device.StartTimer(TimeSpan.FromSeconds(1),()=>
    {
        Duration = Duration - TimeSpan.FromSeconds(1);

        //return false when timer reachs 0
        return (Duration.TotalSeconds>0);

    });
}


Public TimeSpan Duration
{
  get{...}
  set{...}
}

的Xaml:

<Label Text={Binding Duration, StringFormat='{0:HH:mm:ss}'} />