在我的 WPF 应用程序中,我有一个数据网格和一个文本框。在文本框的 textChanged 事件中,我输入了这个:
myDatagrid.ItemsSource =
myListOfObjects.Where(item => item.Name.Contains(MyTextBox.Text)); //Filter
if (myDatagrid.Items.Count > 0) // If no itens, then do nothing
{
myDatagrid.SelectedIndex = 0; // If has at least one item, select the first
}
myDatagrid.Items.Refresh();
请注意,当文本更改时,我在 DataGrid 的第一行强制选择。
但不幸的是,该行的颜色不会变为 blue,因此很难看到选择。
我真的需要这个,因为在文本框的 PreviewKeyDown 事件中我有这个:
private void myTextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Up)
{
if (!(myDataGrid.SelectedIndex <= 0))
{
myDataGrid.SelectedIndex--; // Go one position Up
}
}
if (e.Key == Key.Down)
{
if (!(myDataGrid.SelectedIndex == myDataGrid.Items.Count - 1))
{
myDataGrid.SelectedIndex++; // Go one position Down
}
}
}
因此,当文本框获得焦点并且用户按下向上或向下键时,选择似乎不会改变。
关于如何使数据网格上的选定项目将其颜色更改为蓝色的任何想法?
另一件事:在我的虚拟机中,它可以工作!使用相同的代码!怎么可能?
我认为那是航空玻璃,但我将主题更改为 Windows 7 Basic(在虚拟机中相同)并且仍然无法正常工作。
谢谢,对不起我的英语。