MaterialDesignThemes Wpf TimePicker 作为不可打字

问题描述 投票:0回答:1
MaterialDesignThemes.Wpf.TimePicker timePicker = new MaterialDesignThemes.Wpf.TimePicker();
            timePicker.Name = name.Replace("/", "000").Trim();
            timePicker.Tag = name;
            timePicker.Is24Hours = true;
            timePicker.Style = (Style)Application.Current.Resources["MaterialDesignTimePicker"];
            timePicker.PreviewTextInput += NumberValidationTextBox;
            timePicker.Margin = new Thickness(10);
            timePicker.BorderThickness = new Thickness(1);
            timePicker.HorizontalAlignment = HorizontalAlignment.Stretch;
            timePicker.Foreground = Brushes.Black;

我正在根据材料设计主题创建一个时间选择器。现在时间选择器可以选择从时钟中选择时间或可以输入文本,我想让时间选择器不可输入。只有用户可以从时钟中选择时间。

wpf timepicker materialdesignthemes
1个回答
0
投票

要使 MaterialDesignThemes.Wpf.TimePicker 不可键入,您可以禁用该控件的键盘输入。您可以通过处理 PreviewKeyDown 事件并将事件参数的 Handled 属性设置为 true 以防止处理任何按键来实现此目的。以下是修改代码的方法:

MaterialDesignThemes.Wpf.TimePicker timePicker = new MaterialDesignThemes.Wpf.TimePicker();
timePicker.Name = name.Replace("/", "000").Trim();
timePicker.Tag = name;
timePicker.Is24Hours = true;
timePicker.Style = (Style)Application.Current.Resources["MaterialDesignTimePicker"];
timePicker.PreviewTextInput += NumberValidationTextBox;
timePicker.PreviewKeyDown += (sender, e) =>
{
    // Prevent any keyboard input
    e.Handled = true;
};
timePicker.Margin = new Thickness(10);
timePicker.BorderThickness = new Thickness(1);
timePicker.HorizontalAlignment = HorizontalAlignment.Stretch;
timePicker.Foreground = Brushes.Black;

通过添加 PreviewKeyDown 事件处理程序并设置 e.Handled = true;在其中,您可以有效地阻止 TimePicker 中的任何键盘输入,使其不可打字,同时仍然允许用户从时钟中选择时间。

© www.soinside.com 2019 - 2024. All rights reserved.