在我的WPF项目中,我有ListBox,我想添加SearchBox。我创建了TextBox和Button。单击按钮时的事件如下所示:(我使用MVVM和RelayCommand)
private void Search()
{
ListBox.SelectedItems.Clear();
if (string.IsNullOrEmpty(SearchTextBox))
{
return;
}
for(var i = 0; i < ListBox.Items.Count-1; ++i)
{
if(ListBox.Items[i].ToString().ToLower().Contains(searchTextBox.ToLower()))
{
ListBox.SelectedItems.Add(ListBox.Items[i]);
ListBox.SelectedIndex = i;
}
}
}
并且在SelectedItems中添加了正确的元素,但在我的程序元素中未选择。
从视图模型中引用ListBox
元素肯定不是MVVM。
无论如何,要解决选择问题,您应该遍历all个项目,即直到i < ListBox.Items.Count
而不是ListBox.Items.Count - 1
,并且not设置SelectedIndex
属性:
ListBox.SelectedItems.Clear();
for (var i = 0; i < ListBox.Items.Count; ++i)
{
if (ListBox.Items[i].ToString().ToLower().Contains(searchTextBox.ToLower()))
{
ListBox.SelectedItems.Add(ListBox.Items[i]);
}
}