2012-04-28 14 views
0

DataGridが最初に表示されたときに、矢印キーを使用してDataGridのナビゲーションに問題があります。上/下キーは現在の行を変更しません。行をクリックして初めて、キーが機能し始めます。フォーカスに関連することがありますが、プログラムでフォーカスを設定する方法はわかりません。DataGridでSelectedItemをバインドしてもキーが動作しません

<DataGrid ItemsSource="{Binding Tasks}" 
       AutoGenerateColumns="False" 
       SelectedItem="{Binding SelectedTask, Mode=TwoWay}" 
       SelectionMode="Single"> 
     <DataGrid.Columns> 
     <DataGridTextColumn Header="Title" 
          Binding="{Binding Title}" /> 
     </DataGrid.Columns> 
</DataGrid>

class MainViewModel : ModelBase 
{ 
    private readonly ObservableCollection<TaskModel> tasks = new ObservableCollection<TaskModel>(); 
    public MainViewModel() 
     : base() 
    { 
     this.Tasks.Add(new TaskModel("task0")); 
     this.Tasks.Add(new TaskModel("task1")); 
     this.Tasks.Add(new TaskModel("task2")); 
     this.SelectedTask = this.Tasks[0]; 
    }<br> 
    public TaskModel SelectedTask { get; set; } 
    public ObservableCollection<TaskModel> Tasks 
    { 
     get { return this.tasks; } 
    } 
} 

答えて

0

また、これを行うことができます:

<DataGrid PreviewKeyDown="DataGrid_PreviewKeyDown" 

を。

private void DataGrid_PreviewKeyDown(object sender, KeyEventArgs e) 
{ 
    DataGrid grid = sender as DataGrid; 
    ICollectionView view = CollectionViewSource.GetDefaultView(grid.ItemsSource); 

    switch (e.Key) 
    { 
     case Key.Up: 
      view.MoveCurrentToPrevious(); 
      e.Handled = true; 
      break; 
     case Key.Down: 
      view.MoveCurrentToNext(); 
      e.Handled = true; 
      break; 
    } 
} 
+0

を私は同じ問題を抱えてきましたが、この解決策は、残念ながら動作しませんでした。イベントは、データバインドされたソート済みのデータグリッドでは実行されません。 –

関連する問題