前提・実現したいこと
DataGridのキーボード操作に関する質問です。
現状、tabキーによる行の移動は廃止しています。
ただ行内のセル移動はtabキーでも移動可で、名前のセルまで移動し、
更にtabキーをクリックするとButtonにフォーカスが当たるようになっています。
実現したいことは以下となります。
Buttonからtabキーによって再度DataGridに戻ってきた時に、
1行目のIDセルではなく、すでに選択済みの行に直接フォーカスが戻ってくるようにしたいです。
現状の画像では、3行目が選択されている状態で一旦tabキーでDataGridを離れ、
再度戻ってきた状態の画像で、1行目のIDセルにフォーカスが当たっているのが分かります。
これを直接3行目にフォーカスが当たっているようにしたいのです。
もしくは、
再度DataGridに戻ってきた時に、1行目でも構わないのですが、
IDのセルのみにフォーカスが当たるのではなく、
1行全体にフォーカスが当たる(背景色が変わるなど)ようにするにはどうすれば良いのでしょうか?
以上よろしくお願いいたします。
現状
該当のソースコード
<Grid> <DataGrid Name="dataGrid01" AutoGenerateColumns="False" KeyboardNavigation.TabNavigation="Once" Margin="0,37,0,76"> <!--各行スタイル--> <DataGrid.RowStyle> <Style TargetType="DataGridRow"> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="Green" /> <Setter Property="Foreground" Value="Black" /> </Trigger> </Style.Triggers> </Style> </DataGrid.RowStyle> <!--各セルスタイル--> <DataGrid.CellStyle> <Style TargetType="DataGridCell"> <Style.Triggers> <Trigger Property="IsSelected" Value="True"> <Setter Property="Background" Value="Orange" /> <Setter Property="Foreground" Value="Black" /> </Trigger> </Style.Triggers> </Style> </DataGrid.CellStyle> <DataGrid.Columns> <DataGridTextColumn Header="ID" Binding="{Binding Id}"></DataGridTextColumn> <DataGridTextColumn Header="名前" Width="*" Binding="{Binding Name}"></DataGridTextColumn> </DataGrid.Columns> </DataGrid> <Button Content="Button" HorizontalAlignment="Left" Margin="417,270,0,0" VerticalAlignment="Top" Width="75" /> </Grid>
補足情報(データ側のコード)
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); List<Book> books = new List<Book>(); books.Add(new Book() { Id = 1, Name = "太郎" }); books.Add(new Book() { Id = 2, Name = "花子" }); books.Add(new Book() { Id = 3, Name = "次郎" }); dataGrid01.ItemsSource = books; } public class Book { public int Id { get; set; } public string Name { get; set; } } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/18 00:16