WPF:输入持续时间(hh:mm:ss)
我希望允许用户输入持续时间。 如果可能的话,我希望将输入绑定到一个整数属性,该属性以秒为单位表示值。输入的格式应该是:“HH:mm:ss” 我的ViewModel中有以下代码: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
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
?另外,您是否考虑过使用转换器?我的数据库格式作为此条目iinteger
。但是我可以使用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}'} />