【问题标题】:RadDateTimePicker + Mask for Data EntryRadDateTimePicker + 数据输入掩码
【发布时间】:2012-11-14 12:00:19
【问题描述】:

要求: 允许用户以###### 的格式输入日期,同时还可以从 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 代码?如果是这样,有人可以分享一些知识并帮助一个人吗?还是有其他方法可以共同满足追捧的要求?这不可能是第一次出现?

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

【问题讨论】:

  • 对于不赞成的投票者,至少给出一个解释,否则你的意见对任何人都没有帮助。

标签: c# silverlight validation xaml telerik


【解决方案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

【讨论】:

  • 哈!我在挖掘他们的文档时看到了同样的控制,试图让我的所有 xaml 解决方案都能正常工作,我只是在等待进入并修改它。我会给它一个测试,我们会看看我们能做些什么,但如果它有效,我将成为一个快乐的露营者! :)
  • 所以我尝试了,但将格式替换为“{}{0:M/d/yy}”,并完全删除了掩码。这对所有事情都很有效,除了他们仍然需要输入全年而不是最后两位数。但是,它确实解决了键入而不是键入斜杠的要求。所以绝对+1!现在,如果我能弄清楚如何输入 101012 变成 10/10/2012 并在两个控件之间进行以反映这样的情况,我会被设置:D
  • 也许我不明白,上面答案中的 Mask 确实允许用户只需要输入 2 位数的年份。输入后,字符串将被格式化为 FormatString 属性中的内容。
  • 在 SL 中测试过,但不是这样。没有什么可以插入“20”来完成这一年。不过我可以再修补一下。
  • 终于搞定了,只需要对缺失的部分进行字符串格式化,就可以让它工作了,干杯
猜你喜欢
  • 1970-01-01
  • 2017-06-24
  • 2020-08-15
  • 2019-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-12
  • 2014-10-20
相关资源
最近更新 更多