我想允许用户输入持续时间。 如果可能,我希望将输入绑定到一个整数属性,该属性表示以秒为单位的值。输入应该形成如下:“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项目,但我认为这是一回事。
答案 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}'} />