我正在使用 WP7 Silverlight Toolkit 中的 AutoCompleteBox。我已经看到了将字符串的静态列表(不变列表)绑定到 AutoCompleteBox 的示例。但是,是否有一个示例显示如何以更动态的方式绑定 AutoCompleteBox?我在下面的尝试不断抛出 InvalidOperationException: Cannot change ObservableCollection during CollectionChanged 或 PropertyChanged 事件。
这就是我的 xaml 中的内容。
<toolkit:AutoCompleteBox x:Name="tbQuery" TextChanged="tbQuery_TextChanged" />
在我的代码隐藏中,我模拟了如下访问数据库或跨网络。
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 不能以动态方式使用吗?