RadDateTimePicker+数据输入掩码



要求:允许用户以#######的格式输入日期,同时还可以从DatePicker中选择日期(假设输入的所有年份都是2000年后)。因此,例如,用户输入050513,它将变为2013年5月5日。或者,如果他们从DatePicker中选择它,则提供相同的显示。他们还希望它在控件接收焦点时选择全部,这样他们就可以轻松地覆盖任何预先存在的日期。

我尝试了什么:我的xaml比我的c#强得多,所以我试着发挥创意,非常接近,但没有雪茄,所以希望有人能填补空白,但我做到了。我想我可以利用我对RadMaskedTextBox和RadDateTimePicker的了解,所以我把它们的属性交织在一起(我的想法是,我可以只使用Box进行输入,而选择器只用于图标),但出于测试目的,它是这样的;

<StackPanel Grid.Column="2" Orientation="Horizontal" HorizontalAlignment="Center" >
<telerik:RadMaskedTextBox x:Name="radMTB"
Value="{Binding SelectedDate, Mode=TwoWay, 
ElementName=radDP}" 
MaskType="DateTime"
Mask="d" SelectionOnFocus="SelectAll" />                
<telerik:RadDateTimePicker x:Name="radDP" 
InputMode="DatePicker" 
SelectedDate="{Binding SelectedDate, Mode=TwoWay, ElementName=radMTB}"/>
</StackPanel>

这很好,除了它仍然需要他们用斜杠键入整个日期。所以我把MaskType改为Standard,Mask="###/###/\2\0##"插入"20",这样他们就可以像121212一样输入,它变成了12/12/2012,对吗?我以为我有它,直到我试图将值传递给DatePicker。我将选取器上的SelectedDate绑定到TextWithLiterals以获得显示值,运气不好。已尝试显示。文本,显示。值,仅文本,仅值。它们中的任何一个都无法绑定并传递给DatePicker来工作。。。

所以我想我的问题是,我还能以某种方式绑定到文字显示,并仅使用xaml来实现这一点吗?还是RadDateTimePicker不可避免地需要ParseDateTimeValue代码?如果是的话,有人能分享一些知识并帮助一个人吗?或者,是否有其他方法可以共同满足需求?这不可能是第一次出现这种情况吗?

感谢您的阅读和欢呼!

不要使用RadMaskedTextBox,而是尝试使用Telerik的RadMaskedDateTimeInput。它在DateTime值方面更加灵活。

<telerik:RadMaskedDateTimeInput x:Name="radMTB1"
IsClearButtonVisible="False"
FormatString="{}{0:M/d/yyyy}"
Mask="MMddyy"
SelectionOnFocus="SelectAll"
Value="{Binding SelectedDate, Mode=TwoWay, ElementName=radDP2}" />

更多信息:http://www.telerik.com/help/silverlight/radmaskedinput-features-controls-datetime.html

最新更新