- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
为了澄清,我有一个组合框,其中有一个可观察的集合绑定(bind)到它的 itemsource 属性。我希望用户只能输入集合中存在的项目。同时保持
IsTextSearchEnabled="true"
功能。所以我一直在网上寻找有关如何执行此操作的示例。直到现在我想我应该使用
<ComboBox TextInput="cbb1_TextInput" />
事件然后搜索集合。但是我微弱的尝试无法维护自动完成功能,selectedindex 变得困惑和其他不需要的行为。由于我是 wpf 的菜鸟,我想知道是否有仅使用 XAML 部分的解决方案?
编辑:我试过这样的事情:
private void fase1cbb1_KeyUp(object sender, KeyEventArgs e)
{
ComboBox cb = (ComboBox)sender;
bool match = false;
TextBox tb = (TextBox)cb.Template.FindName("PART_EditableTextBox", cb);
if (tb.Text.Length > 0)
{
foreach (MenuItem MI in cb.Items)
{
if (MI.Text.StartsWith(tb.Text))
{
match = true; ;
}
}
if (!match)
{
int len = tb.Text.Length;
if (len > 0)
{
tb.Text = tb.Text.Substring(0, len - 1);
tb.SelectionStart = len;
}
}
}
}
但是一旦不再有匹配项,就没有更多的选择项,也没有更多的自动完成/文本搜索。
感谢任何建议或示例。
解决方案: WPF ComboBox with IsEditable="True" - How can I indicate that no match was found?
最佳答案
如果您一直向下滚动到 ComboBox 的底部在 MSDN 上的文档中,您会发现一个非常简单的可能答案:将 ComboBox.IsEditable
设置为 false。用户仍然可以通过在框中键入前缀来选择编辑器中的项目,但他们只能输入已出现在列表中的值。
缺点是您不会获得任何正常的“TextBox”之类的行为,特别是,您无法将所选项目复制/粘贴到组合框中。如果这对您来说也是一个问题,请告诉我们,但这是 Windows 中 DropDownList 样式 ComboBox 的典型行为。
关于c# - 如何限制组合框中的用户输入,以便您只能键入集合中的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7201495/
有一条(相对)众所周知的 Perl 公理:“只有 Perl 可以解析 Perl”。我想知道 Perl 6 是否仍然如此? 扩大讨论...考虑到 PyPy 最近的更新,我想到了这个问题。 Perl 独特
这是设置。在上一个问题中,我发现我可以通过子组件中的状态传递对象属性,然后使用 componentDidUpdate 获取该对象属性。在这种情况下,状态和属性都称为到达。 这是基本代码... expo
我运行的是 10.5.2 社区版。我已经标记了 源/主要/资源 作为源目录。我可以右键单击并“编译”某些文件,据我所知,这意味着 IDE 将文件复制到与发送类文件的“com.mydomain.pack
我是一名优秀的程序员,十分优秀!