如何设置ComboBox输入的文本长度?
例如,它不会超过20岁。
答案 0 :(得分:1)
我使用了PreviewKeyDown事件,非常简单+你可以显示警告或其他东西
将以下方法注册到您的ComboBox.PreviewKeyDown + =事件,
如果用户按空格键,则不会触发KeyDown事件。
private void ComboBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (ComboBox.Text.Length > 19) // allow max 20 chars
{
if (e.Key != Key.Back) // allow removing chars
{
e.Handled = true; // block any additional key press if there is more than allowed max
System.Media.SystemSounds.Beep.Play(); // optional: beep to let user know he is out of space :)
}
}
}
答案 1 :(得分:1)
只是让故事完整:
您有两种选择:
Combobox显然在其模板中包含TextBox
。您需要找到一种方法来访问TextBox,可能是通过Combobox Template
并设置它MaxLength
您可能将Combobox.Text数据绑定到viewmodel属性。您可以使用INotifyDataErrorInfo在viewmodel中进行验证,甚至可以从setter中抛出异常。如果超过允许的最大长度,用户将看到错误消息。从UX的角度来看,我认为这样做更好。不幸的是,如果你还没有使用INotifyDataErrorInfo,它可以使它工作很多。
答案 2 :(得分:0)
在 ComboBox Class (MSDN)上:
<ComboBox>
Items
</ComboBox>
输入的长度取决于您放入的项目。因此,您无法设置该属性。但是,文本框确实有max length:
<TextBox MaxLength="20">
Text
</TextBox>
答案 3 :(得分:-1)
我通过XAML找到了一个简单的解决方案。在ComboBox资源中,我们可以设置文本框的样式,并通过setter set maxlenth。
<ComboBox Name="comboBox" Width="100" IsEditable="True">
<ComboBox.Resources>
<Style TargetType="{x:Type TextBox}">
<Setter Property="MaxLength" Value="yourValue"/>
</Style>
</ComboBox.Resources>
</ComboBox>
编辑:这适用于Actipro ComboBox。对于通常的comboBox来完成这项工作,看看here