2017-02-09 4 views
0

私のデータグリッドがロードされると、xamlで選択されたindex = 0を指定して最初の行のフォーカスを取得できますが、検索を実行するとフォーカスが失われてフォーカスが最初の行データグリッドをソートして検索する。 これは、データグリッド内の特定のものを検索する私のコードです。データグリッドをソートして検索した後、最初の行のフォーカスを保持する方法は?

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

あなたはこのお読みください:プログラムからWPFでデータグリッド内の行またはセルを選択し、集中する方法

を:https://blog.magnusmontin.net/2013/11/08/how-to-programmatically-select-and-focus-a-row-or-cell-in-a-datagrid-in-wpf/

あなたがの行またはセルを選択し、集中することができますDataGridをプログラムで呼び出すと、DataGridのビジュアルユーザーインターフェイス要素にアクセスし、DataGridCellオブジェクトのUIElement.Focus()メソッドを説明されているように呼び出して、マウスを使用した場合と同じ動作になります上のブログの記事で。コードサンプルが含まれています。

DataGridSelectedItemまたはSelectedIndexプロパティを設定して行やセルをフォーカスすることはできません。

関連する問題