当我的数据网格加载时,我可以通过在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;
}
答案 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
属性来聚焦行或单元格。