如何让DatePicker只接受WPF中的数字输入

本文关键字:WPF 数字输入 DatePicker | 更新日期: 2023-09-27 18:28:48

我有以下DatePicker控件:

<Grid x:Name="LayoutRoot" Background="White">
       <DatePicker Margin="2" Grid.Column="1" VerticalAlignment="Center"/>
</Grid>

是否可以只允许用户设置数字输入?或者在无法实现的情况下如何禁用Textbox输入

如何让DatePicker只接受WPF中的数字输入

此代码只允许在DatePicker 中输入数值

XAML:

<DatePicker Margin="2" Grid.Column="1"
            PreviewTextInput="phoneNumber_PreviewTextInput" 
            VerticalAlignment="Center"/>

背后的代码

private void phoneNumber_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
    char character = Convert.ToChar(e.Text);
    if (char.IsNumber(character))
    {
        e.Handled = false;
    }
    else
    {
        e.Handled = true;
    }
}

试试这个:

 <DatePicker Margin="2" Grid.Column="1" VerticalAlignment="Center">
            <DatePicker.Resources>
                <Style TargetType="DatePickerTextBox">
                    <Setter Property="IsReadOnly" Value="True"/>
                </Style>
            </DatePicker.Resources>
        </DatePicker>
</Grid>

事实上,我很感激你的回答,我真的很喜欢它们,但我想要我找到的解决方案,事实上我使用了Regex,下面是使用的代码:

private bool IsTextAllowed(string text)
{
     Regex regex = new Regex("[^0-9/]+"); 
     return !regex.IsMatch(text);
}
private void DatePicker_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
     e.Handled = !IsTextAllowed(e.Text);
}