明確にするために、私はコンボボックスにitemourceプロパティにバインドされた観測可能なコレクションを持っています。私は、ユーザーがコレクションに存在するアイテムだけを入力できるようにしたい。保持している間は、コンボボックス内のユーザー入力を制限するにはどうすればいいですか?コレクション内にある単語だけを入力できますか?
IsTextSearchEnabled="true"
機能性です。 私はこれを行う方法の例をオンラインで探しています。今までは、私は私が使用する必要があると思った。
<ComboBox TextInput="cbb1_TextInput" />
イベントを収集してから検索します。しかし、私の弱い試みの傾きは、オートコンプリート機能を維持し、selectedindexは混乱し、他の望ましくない動作を取得します。私はwpfのかなりのノブなので、XAMLの部分だけを使うソリューションがあるのだろうか?
EDIT: 私はこのような何か試してみました:
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;
}
}
}
}
をしかし、すぐに一致がないとして、もうこれ以上、選択した項目、およびこれ以上のオートコンプリート/ TEXTSEARCHはありません。任意のアドバイスや例については
thnxです。
SOLUTION:あなたは、MSDNのComboBoxドキュメントの一番下まですべての方法をスクロールすると WPF ComboBox with IsEditable="True" - How can I indicate that no match was found?
私はKeyUpイベントを使用しません。 BeforeValueChangeやこれに類するものはありませんか? (わからない、私は主にInfragisticsを使用する)そうであれば、新しいテキストがアイテムと一致するかどうかを確認することができる。表示されない場合は、テキスト変更イベントをキャンセルします。 – Tipx