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

WPF:输入持续时间(hh:mm:ss),wpf,xamarin,mvvm,Wpf,Xamarin,Mvvm,我希望允许用户输入持续时间。 如果可能的话,我希望将输入绑定到一个整数属性,该属性以秒为单位表示值。输入的格式应该是:“HH:mm:ss” 我的ViewModel中有以下代码: private int _duration; public int duration { get { return _duration; } set { if (_duration == value) return; _duration = value; RaisePro

我希望允许用户输入持续时间。 如果可能的话,我希望将输入绑定到一个整数属性,该属性以秒为单位表示值。输入的格式应该是:“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表单项目,但我认为它是一样的。

使用
TimeSpan
而不是
int
(Howto:
TimeSpan.FormSecond(second)

虚拟机:

Xaml:



我收到一个错误:
输入字符串的格式不正确
。在您的示例中,您使用了一个标签,它是一个只读组件。我想要的是一个可写组件,允许用户输入持续时间。格式错误。对不起,我的错。右格式:
Text=“{Binding Duration,StringFormat='{0:hh\\\:mm\\:ss}”
谢谢。但即使使用这种格式,它也允许输入任何字符。为什么用整数而不是
DateTime
?另外,您是否考虑过使用转换器?我的数据库格式作为此条目i
integer
。但是我可以使用
DateTime
并在保存之前将其转换为
int
,这不是问题。顺便说一下,更改为
DateTime
不会更改任何有关输入格式的内容。我将尝试编写一个转换器,然后回来提供反馈。
DateTime
+converter。甚至可以将整数值转换为UI的相应格式。使用适当的转换器,两者都是可能的。
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{...}
}
<Label Text={Binding Duration, StringFormat='{0:HH:mm:ss}'} />