0
我有一個文本框,我讓用戶輸入一些文本,然後過濾ListBox(有點像自動完成)。但是,我不確定在TextBox觸發TextChanged事件後如何更新ListBox?如何從TextChanged事件更新列表框
查看
<TextBox Name="textBox" TextChanged="textBox_TextChanged"/>
<ListBox ItemsSource="{Binding NamesList}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
視圖模型
public ObservableCollection<string> NamesList
{
get
{
IEnumerable<string> names = MethodCallToGetStrings();
return new ObservableCollection<string>(names);
}
}
public void UpdateNamesList(string _searchTerm)
{
IEnumerable<string> names = MethodCallToGetStrings()
.Where(x => x.Name.Contains(_searchTerm))
.Select(x => x.Name);
// how to update NamesList from here?
}
文本框事件
private void textBox_TextChanged(object sender, TextChangedEventArgs e)
{
TextBox textBox = sender as TextBox;
m_viewModel.UpdateNamesList(textBox.Text);
}
由於類型不同,無法將名稱分配給NamesList,也嘗試創建新的ObservableCollection。 – Michael
爲什麼每次獲取NamesList時都要創建一個新的ObservableCollection?另外,你的二傳手在哪裏? –
@RodrigoSilva是的,那可能是我出錯的地方。 'public ObservableCollection NamesList {get;組; ''現在有效。 –
Michael