WPFについてのすばらしい点の1つは、バインディングが可能なことです。具体的には、コード内のプロパティをUIのコントロールにバインドします。
のC#:
private List<Person> myList = new List<Person>();
public List<Person> MyList
{
get { return myList; }
set { myList = value; }
}
WPF:
<ComboBox Name="cboObjects" ItemsSource="{Binding MyList}"/>
あなたが設定されますので、私はあなたが、あなたのコンボボックスに以下のようなものを持っているものは何でもオブジェクトのリストを結合するフィルタコンボボックスを持っていますコンボボックスをリストにバインドするだから、今はそれをフィルタリングする必要があります。次に、私はKeyBownイベントを使用してComboboxが入力されるたびに起動します。そのイベント中にユーザーのテキストをキャプチャし、リスト内のものと一致するものを見つけようとすると、見つかったものと同じリストプロパティが設定されます..
private void cboObjects_KeyDown(object sender, KeyEventArgs e)
{
string temp = ((ComboBox)sender).Text;
var newList = MyList.Where(x => x.Name.Contains(temp));
MyList = newList.ToList();
}
あなたの人物のリストがフィルタされました!このようにすることにはいくつかの問題がありますが、元のリストはもうなくなりました。もう1つのことは、このアプローチに進むと、あなたのUIが更新されない限り更新されないということです。したがって、INotifyPropertyChangedインタフェースを使用してください。プロパティを更新すると、いつでもイベントを発生させ、UIに値を再度取得するように指示します。
最後に、あなたのコンボボックスは編集不可能なので、IsReadOnly = false、IsEditable = trueに設定してみてください!