我有一个ComboBox,我可以在每小时和每分钟星座加载。
这提供了许多项目,并仍然保持这个用户友好我想要自动完成。但问题是当我转向IsEditable="true"
时,用户也可以输入任何值。
<ComboBox x:Name="cmbStartZeit" IsTextSearchEnabled="True" />
我在两个for循环中添加项目
for(int i = 00; i <= 24; i++)
{
for(int j = 00; j <= 59; j++)
{
cmbStartZeit.Items.Add(i.ToString("00") + ":" + j.ToString("00"));
}
}
如何在不允许用户添加自定义值的情况下启用自动完成功能?
答案 0 :(得分:1)
您可以检查组合框项目是否包含TextChanged
事件中输入的文本。
所以xaml代码看起来像这样。
<ComboBox Name="cbTest" IsTextSearchEnabled="True" IsEditable="True"
TextBoxBase.TextChanged="cbTest_TextChanged" />
代码behinde应该是这样的。此代码可防止用户输入,而不是组合框项目。
string _prevText = string.Empty;
private void cbTest_TextChanged( object sender, TextChangedEventArgs e )
{
foreach ( var item in cbTest.Items )
{
if ( item.ToString().StartsWith( cbTest.Text ) )
{
_prevText = cbTest.Text;
return;
}
}
cbTest.Text = _prevText;
}