【发布时间】:2012-11-14 12:00:19
【问题描述】:
要求: 允许用户以###### 的格式输入日期,同时还可以从 DatePicker 中选择它(假设输入的所有年份都是 2000 年以后。)所以例如,用户输入 050513 它变成 5/5/2013。或者,如果他们从 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>
这很好用,只是它仍然需要他们用斜杠输入整个日期。所以我用 Mask="##/##/\2\0##" 将 MaskType 更改为 Standard 以插入“20”,这样他们就可以像 121212 一样输入,它变成 12/12/2012 对吗?以为我拥有它,直到我尝试将值传递给 DatePicker。我将 Picker 上的 SelectedDate 绑定到 TextWithLiterals 以获取显示值,没有运气。试过 Display.Text,Display.Value,只是 Text,只是 Value。它不能与它们中的任何一个一起绑定并传递给 DatePicker 工作......
所以我想我的问题是,我还能以某种方式绑定到该文字显示并仅使用 xaml 来完成这项工作吗?还是RadDateTimePicker 不可避免地需要ParseDateTimeValue 代码?如果是这样,有人可以分享一些知识并帮助一个人吗?还是有其他方法可以共同满足追捧的要求?这不可能是第一次出现?
感谢您阅读任何一种方式并欢呼!
【问题讨论】:
-
对于不赞成的投票者,至少给出一个解释,否则你的意见对任何人都没有帮助。
标签: c# silverlight validation xaml telerik