Kry*_*anB 6 c# validation wpf combobox visual-studio
我有一个名字的组合框.我将框设置为可编辑,以便用户可以输入名称.我想要它,以便用户只能输入列表中已有的名称.当用户单击"保存"时,如果框中的框为空,则我希望该框显示红色验证边框.有没有办法做到这一点?
<ComboBox IsEditable="True"
Grid.Column="2"
Grid.Row="1"
Margin="5,3,0,0"
Text="{Binding Model.Number}"
ItemsSource="{Binding DList}"
SelectedItem="{Binding Model.Number}"
IsEnabled="{Binding EnableComboBox}"
VerticalAlignment="Top">
</ComboBox>
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,您希望用户能够通过键入来选择现有列表项,但不能键入不在列表中的字符串。这可以通过以下方式完成:
<ComboBox IsEditable="False"></ComboBox>
Run Code Online (Sandbox Code Playgroud)
这将允许用户开始输入字符串,但您会丢失用于输入的文本框。
另一种方法是允许用户通过设置<ComboBox IsReadOnly="False" IsEditable="True">和处理例如LostFocus检查输入是否有效的事件来输入他们想要的任何内容。下面是一个例子:
private void ComboBox_LostFocus(object sender, RoutedEventArgs e)
{
bool allowed = false;
foreach (ComboBoxItem it in comboBox.Items)
{
if (it.Content.ToString() == comboBox.Text)
{
allowed = true;
break;
}
}
if (!allowed)
{
MessageBox.Show("MISS!");
}
else
{
MessageBox.Show("HIT!");
}
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我无法快速设置边框颜色,但您可以从这里获得重点。此外,根据您的ComboBoxItem类型,您可能需要将 匹配comboBox.Text到某个属性。