如何在datagrid中排序和搜索后保留第一行的焦点?

时间:2017-02-09 17:00:22

标签: wpf

当我的数据网格加载时,我可以通过在xaml中提供选定的索引= 0来获得第一行的焦点,但是当我执行搜索时,焦点会丢失,所以我希望焦点保留在第一行,无论如何我在datagrid上进行排序和搜索。 这是我在数据网格中搜索特定内容的代码。

 private void TextBox_TextChanged(object sender, RoutedEventArgs e)
        {
            TextBox STB = (TextBox)sender;
            this.SearchValue = STB.Text;


            //ContentPresenter CP = (ContentPresenter)STB.TemplatedParent;
            //DataGridColumnHeader DGCH = (DataGridColumnHeader)CP.TemplatedParent;
            //DataGridColumn DGC = DGCH.Column;
            //this.ColumnName = DGC.Header.ToString();


            this.Datalist.Filter = this.CustomeFilter;
            DataGrid dataGrid = this as DataGrid;

            dataGrid.CurrentCell = new DataGridCellInfo(
    dataGrid.Items[0], dataGrid.Columns[0]);
            dataGrid.BeginEdit();
        }

在上面的代码中,我试图获得当前单元格的焦点,但都是徒劳的。

private bool CustomeFilter(object item)
{

    SymbolData ltpObj = item as SymbolData;
    //WpfApplication1.Model.LtpMessage ltpObj = item as WpfApplication1.Model.LtpMessage;
    string values = (string)ltpObj.Symbol.ToString();
    values = values.ToUpper();
    //return values.StartsWith(this.SearchValue.ToString().ToUpper());
    if (values.StartsWith(this.SearchValue.ToString().ToUpper()))
    { return true; }
    else
        return false;

}

1 个答案:

答案 0 :(得分:0)

你应该读到这个:

如何在WPF中以编程方式选择和聚焦DataGrid中的行或单元格: https://blog.magnusmontin.net/2013/11/08/how-to-programmatically-select-and-focus-a-row-or-cell-in-a-datagrid-in-wpf/

您可以通过编程方式选择并聚焦DataGrid的行或单元格,并获得与使用鼠标时相同的行为,方法是访问DataGrid控件的可视用户界面元素并调用{{ 1}}上面博客文章中描述的特定UIElement.Focus()对象上的方法。包含代码示例。

您不能简单地设置DataGridCell的{​​{1}}或SelectedItem属性来聚焦行或单元格。