簡體   English   中英

如何限制組合框中的用戶輸入,以便您只能輸入集合中的單詞?

[英]How do I limit user input in a combobox, So that u can only type words that are within the collection?

為了澄清我有一個組合框,其可觀察的集合綁定到其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;

                }
            }
        }
    }

但是一旦沒有匹配,就沒有更多的選定項目,也沒有更多的自動完成/文本搜索。

thnx任何建議或例子。

解決方案: 帶有IsEditable =“True”的WPF ComboBox - 如何指示未找到匹配項?

如果你一直向下滾動到MSDN上的ComboBox文檔的底部,你會發現有一個非常簡單的答案:將你的ComboBox.IsEditable設置為false。 用戶仍然可以通過在框中鍵入前綴來選擇編輯器中的項目,但是他們只能輸入已經出現在列表中的值。

缺點是您沒有獲得任何正常的“TextBox”類似行為,特別是您無法將所選項目復制/粘貼到組合框之外。 如果這也是一個問題,請告訴我們,但這仍然是Windows中DropDownList樣式ComboBox的典型行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM