在我的WPF应用程序中,我有一个数据集和一个文本框。在textbox的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的第一行中,我强制进行选择。
但是不幸的是,--行的颜色--没有更改为蓝色的,因此很难看到所选内容。
我确实需要这样做,因为在textbox的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 (在虚拟机中也是如此),但仍然无法工作。
谢谢,也对不起我的英语。
发布于 2012-10-24 13:25:52
你能试着用SelectedItem吗?您可以始终创建一个新属性并绑定到此属性,然后直接设置此项,而不是使用选定的索引。希望这将触发DataGrid控件中的任何附加逻辑:)
//Declare property outside of method
public ObjectType SelectedItem { get; set; }
//Set datacontext on load
DataContext = this;
myDatagrid.ItemsSource = myListOfObjects.Where(item => item.Name.Contains(MyTextBox.Text)); //Filter
if (myDatagrid.Items.Count > 0) // If no itens, then do nothing
{
SelectedItem = myDatagrid.ItemSource[0]; // If has at least one item, select the first
}
myDatagrid.Items.Refresh();也别忘了设置你的装订!
SelectedItem="{Binding SelectedItem}"希望这能帮上忙!
https://stackoverflow.com/questions/13049666
复制相似问题