2011-07-11 14 views
2

私の問題は、selectedItem(データグリッドの行をマーク)を設定したいということです。 私は多くを検索しましたが、実際には、データグリッドを反復するのではなく、より良い解決策があることを願っています。WPF DataGrid set selectedItem

私の提案:

私は値3と番号を持っていると私は数3とデータグリッド行がマークされていることを望む... 私はこの1つを試してみました:

DataGridRow row = (DataGridRow)gridErrors.ItemContainerGenerator.ContainerFromItem(gridErrors.SelectedItem); 

     if (row != null) 
     { 
      ErrorInfo info = row.Item as ErrorInfo; 

      var blubb = from c in this.objectsToSync 
         where c.Number == info.Number 
         select c; 

      if (blubb != null) 
      { 
       gridCsvContent.SelectedItem = blubb; 
       gridCsvContent.ScrollIntoView(blubb); 
       DataGridRow rowContent = (DataGridRow)gridCsvContent.ItemContainerGenerator.ContainerFromItem(gridCsvContent.SelectedItem); 
       rowContent.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next)); 
      } 
     }  

まずI私の番号が(値3) からDataGridRowを抽出すると、番号3のオブジェクトを取得するlinqクエリがあります。 次に、selectedItemを設定しますが、それは後でnullになります。

データグリッドを繰り返す必要がないソリューションはありますか? 選択したアイテムを直接設定する方法はありますか?

ありがとうございます! kr

答えて

1

残念ながら、セル内の既存のデータと一致するようにコレクションを反復処理する必要があります。

MVVMパターンを使用している場合は、このロジックをViewModelに移動して、基礎となるデータを直接操作できます。依存関係プロパティを作成して、SelectedItemをバインドすることができます。私はあなたがまだScrollIntoViewを呼び出すには、コードの背後にあるイベントが必要になると思います。

関連する問題