2

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

我尝试了什么:我的 xaml 比我的 c# 强大得多,所以我尝试发挥创造力并且非常接近但没有雪茄,所以希望有人可以填补空白,但这就是我得到的地方。我想我可以利用我对RadMaskedTextBoxRadDateTimePicker的了解,所以我将它们的属性交织在一起(我的想法是我可以只使用 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>

这很好用,除了它仍然需要他们用斜杠输入整个日期。所以我用 Mask="##/##/\2\0##" 将 MaskType 更改为 Standard 以插入“20”,这样他们就可以像 121212 一样输入,它变成 12/12/2012 对吗?以为我拥有它,直到我尝试将值传递给 DatePicker。我将 Picker 上的 SelectedDate 绑定到TextWithLiterals以获取显示值,没有运气。试过 Display.Text,Display.Value,只是 Text,只是 Value。它不能与它们中的任何一个一起绑定并传递给 DatePicker 工作......

所以我想我的问题是,我仍然可以以某种方式绑定到该文字显示并仅使用 xaml 来完成这项工作吗?还是RadDateTimePicker不可避免地需要ParseDateTimeValue代码?如果是这样,有人可以分享一些知识并帮助一个人吗?还是有其他方法可以共同满足追捧的要求?这不可能是第一次出现?

感谢您阅读任何一种方式和欢呼!

4

1 回答 1

1

尝试使用 Telerik 的 RadMaskedDateTimeInput,而不是使用 RadMaskedTextBox。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

于 2012-11-28T02:03:38.710 回答