WP7 Silverlight Toolkit の AutoCompleteBox を使用しています。文字列の静的リスト (変化しないリスト) を AutoCompleteBox にバインドする例を見てきました。ただし、AutoCompleteBox をより動的な方法でバインドする方法を示す例はありますか? 以下の私の試みは InvalidOperationException をスローし続けます: CollectionChanged または PropertyChanged イベント中に ObservableCollection を変更することはできません。
これは私のxamlにあるものです。
<toolkit:AutoCompleteBox x:Name="tbQuery" TextChanged="tbQuery_TextChanged" />
私のコード ビハインドでは、次のようにデータベースまたは Web にアクセスすることをシミュレートしました。
private void tbQuery_TextChanged(object sender, RoutedEventArgs e)
{
AutoCompleteBox acBox = sender as AutoCompleteBox;
string txt = acBox.Text;
if (txt.Length > 0)
{
//exception thrown below here;
//_words is of type ObservableCollection<string>
//earlier, acBox.ItemsSource was set to _words
_words.Clear();
_words.Add(txt + "a");
_words.Add(txt + "b");
_words.Add(txt + "c");
}
}
私も以下のようなことを試しましたが、うまくいきませんでした。同じ InvalidOperationException がスローされます。
private void tbQuery_TextChanged(object sender, RoutedEventArgs e)
{
AutoCompleteBox acBox = sender as AutoCompleteBox;
string txt = acBox.Text;
if (txt.Length > 0)
{
List<string> list = new List<string>();
list.Add(txt + "a");
list.Add(txt + "b");
list.Add(txt + "c");
//exception thrown below here;
acBox.ItemsSource = list;
}
}
ツールキットのデモは静的リソースの使用のみを示しており、ほとんどの例は静的リストのみを示しています。これは、AutoCompleteBox が動的に使用されないためですか?