WPF 数据网格选择问题

标签 wpf list datagrid selection

在我的 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 的第一行强制选择。

但不幸的是,行的颜色不会变为蓝色 ,使得很难看到选择。

我真的需要这个,因为在文本框的 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(在虚拟机中相同)并且仍然无法正常工作。

谢谢,对不起我的英语。

最佳答案

您可以尝试使用 SelectedItem 吗?您始终可以创建一个新属性并绑定(bind)到此属性,然后直接设置此项目,而不是使用选定的索引。希望这会触发 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();

也不要忘记设置绑定(bind)!
SelectedItem="{Binding SelectedItem}"

希望有帮助!

关于WPF 数据网格选择问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13049666/

相关文章:

wpf - 在没有打开对话框的情况下使用 WPF 打开 Word 文档

wpf - 如何在 PowerShell 中将事件处理程序附加到在 XAML 中定义的 DataGridTemplateColumn 中的按钮?

c# - 如何使用mvvm在WPF中的DataGrid中的单元格中进行IsReadOnly更改

WPF MVVM 确定模型何时更改集合中的项目

c# - 根据绑定(bind)值更改 ListView 图像

Python:合并字典列表

java - 为什么 Collections.copy 不增加目标的大小?

python - 如何将 numpy 数组与列表相乘以获得多维数组?

c# - IMul​​tiValueConverter - INotifyPropertyChanged

c# - 带有基于日期的子点的 WPF ItemsControl