データの表示に使用する WPF MVVM アプリケーションに取り組んでいDataGrids
ます。私は手動で列を定義していますが、ほとんどの場合、DataGridTextColumn
.
キーボードを使用して結果のデータグリッドをナビゲートする場合、セルにナビゲートすることでセルを強調表示でき、値の入力を開始することでセル値を変更できます。この動作は で機能しDataGridTextColumn
ます。
場合によってはDataGridTemplateColumn
、 と のバインディングが異なるを使用する必要がCellTemplate
ありCellEditingTemplate
ます。これにより、表示された値をフォーマットできますが、ユーザーがセルの編集を開始すると、フォーマットされていない値に戻ります。ただし、上記のキーボード ナビゲーションと編集方法は、現在の実装では機能しません。セルを強調表示して F2 を押して編集するか、マウスでセルをクリックする必要があります。
以下は、私の現在の実装のモックアップです。これFoo
はDataGridTextColumn
正常に動作し、問題を引き起こしてBar
いるDataGridTemplateColumn
にあります。
my の定義を変更しDataGridTemplateColumn
て、 と同じキーボード ナビゲーションおよび編集機能を持たせるにはどうすればよいDataGridTextColumn
ですか?
<DataGrid ItemsSource="{Binding ListItems}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Foo}"
Header="Foo" />
<DataGridTemplateColumn Header="Bar">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ContentPresenter Content="{Binding Path=BarString, Mode=OneWay}"
HorizontalAlignment="Right" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding BarValue, Mode=TwoWay, UpdateSourceTrigger=LostFocus}"
HorizontalContentAlignment="Right" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>