如何禁用手动输入在一个teleerik RadDatePicker
本文关键字:一个 teleerik RadDatePicker 何禁用 手动输入 | 更新日期: 2023-09-27 18:15:58
我正在使用Telerik RadDatePicker
,并且我想禁用用户输入,但是他们应该能够从日历中进行选择。
<telerik:RadDatePicker Culture="{Binding GetLanguage}" x:Name="startDate"
Margin="0,5,0,5" HorizontalAlignment="Left"
VerticalAlignment="Center" Grid.Column="1" TabIndex="2"
MinWidth="120" Width="120" Height="Auto" MaxHeight="25"
KeyDown="filterDate_KeyDown" >
</telerik:RadDatePicker>
我用过KeyDown
,但没有用
PreviewKeyDown事件正是为这种事情而存在的。
private void spacebarHandler_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Space)
e.Handled = true;
}
这个问题有一个简单的解决办法。
添加属性EnableTyping="false"
防止用户输入
<telerik:RadDatePicker runat="server" ID="rdpPreviousDay" EnableTyping="false"></telerik:RadDatePicker>
订阅KeyDown
事件:
<telerik:RadDatePicker KeyDown="StartDate_OnKeyDown" />
然后"处理"所有的键,这有效地禁止用户输入任何东西:
private void StartDate_OnKeyDown(object sender, KeyEventArgs e)
{
e.Handled = true;
}
有趣的是,RadDatePicker
上有一个IsReadOnly
属性,它禁用了DatePickerTextBox
,仍然允许用户查看日历,但不幸的是,它也阻止了用户在日历中实际做出选择。它使看起来就像您可以选择日期一样,但是它实际上并没有设置SelectedDate
属性。
设置IsHitTestVisible=False,问题解决。
<telerik:RadDatePicker
SelectedDate="{Binding ValidFrom,Mode=TwoWay}" >
<telerik:RadDatePicker.Resources>
<Style TargetType="telerik:RadWatermarkTextBox">
<Setter Property="IsHitTestVisible" Value="False" />
</Style>
</telerik:RadDatePicker.Resources>
有一个属性DateInput-ReadOnly
。将它设置为true
,你应该很好去。