teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

見直しキャンペーン中

2023/07/27 15:44

投稿

TN8001
TN8001

スコア10111

answer CHANGED
@@ -1,59 +1,59 @@
1
- > DataGridにおいて、特定の列のセルに対してタブフォーカスをさせないようにしたい
2
-
3
- その列が`ReadOnly`でよければズバリな回答がありました。
4
- [wpf - DataGrid tab navigation skip column - Stack Overflow](https://stackoverflow.com/questions/7575636/datagrid-tab-navigation-skip-column)
5
-
6
- でもおそらく`ReadOnly`じゃなくても飛ばしたいのであろうかと思います。
7
-
8
- `DataGridCell`とその中身(`CheckBox`)両方を`IsTabStop="False"`としたところ想定の動作となりました。
9
-
10
- ```xaml
11
- <Window
12
- x:Class="Questions345202.MainWindow"
13
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
14
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
15
- Width="800"
16
- Height="450">
17
- <Grid>
18
- <DataGrid Name="dataGrid" AutoGenerateColumns="False">
19
- <DataGrid.Resources>
20
- <Style TargetType="DataGridCell">
21
- <Style.Triggers>
22
- <Trigger Property="IsReadOnly" Value="True">
23
- <Setter Property="IsTabStop" Value="False" />
24
- </Trigger>
25
- </Style.Triggers>
26
- </Style>
27
- </DataGrid.Resources>
28
- <DataGrid.Columns>
29
- <DataGridTextColumn Binding="{Binding Name}" Header="Name" />
30
- <DataGridTextColumn Binding="{Binding Age}" Header="Age" />
31
-
32
- <!-- ReadOnlyでいい場合 -->
33
- <DataGridCheckBoxColumn
34
- Binding="{Binding AuthMember}"
35
- Header="AuthMember"
36
- IsReadOnly="True" />
37
-
38
- <!-- 編集はしたい場合(Resourcesの記述は不要) -->
39
- <DataGridTemplateColumn Header="AuthMember">
40
- <DataGridTemplateColumn.CellStyle>
41
- <Style TargetType="{x:Type DataGridCell}">
42
- <Setter Property="IsTabStop" Value="False" />
43
- </Style>
44
- </DataGridTemplateColumn.CellStyle>
45
- <DataGridTemplateColumn.CellTemplate>
46
- <DataTemplate>
47
- <CheckBox
48
- HorizontalAlignment="Center"
49
- VerticalAlignment="Center"
50
- IsChecked="{Binding AuthMember, UpdateSourceTrigger=PropertyChanged}"
51
- IsTabStop="False" />
52
- </DataTemplate>
53
- </DataGridTemplateColumn.CellTemplate>
54
- </DataGridTemplateColumn>
55
- </DataGrid.Columns>
56
- </DataGrid>
57
- </Grid>
58
- </Window>
1
+ > DataGridにおいて、特定の列のセルに対してタブフォーカスをさせないようにしたい
2
+
3
+ その列が`ReadOnly`でよければズバリな回答がありました。
4
+ [wpf - DataGrid tab navigation skip column - Stack Overflow](https://stackoverflow.com/questions/7575636/datagrid-tab-navigation-skip-column)
5
+
6
+ でもおそらく`ReadOnly`じゃなくても飛ばしたいのであろうかと思います。
7
+
8
+ `DataGridCell`とその中身(`CheckBox`)両方を`IsTabStop="False"`としたところ想定の動作となりました。
9
+
10
+ ```xml
11
+ <Window
12
+ x:Class="Questions345202.MainWindow"
13
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
14
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
15
+ Width="800"
16
+ Height="450">
17
+ <Grid>
18
+ <DataGrid Name="dataGrid" AutoGenerateColumns="False">
19
+ <DataGrid.Resources>
20
+ <Style TargetType="DataGridCell">
21
+ <Style.Triggers>
22
+ <Trigger Property="IsReadOnly" Value="True">
23
+ <Setter Property="IsTabStop" Value="False" />
24
+ </Trigger>
25
+ </Style.Triggers>
26
+ </Style>
27
+ </DataGrid.Resources>
28
+ <DataGrid.Columns>
29
+ <DataGridTextColumn Binding="{Binding Name}" Header="Name" />
30
+ <DataGridTextColumn Binding="{Binding Age}" Header="Age" />
31
+
32
+ <!-- ReadOnlyでいい場合 -->
33
+ <DataGridCheckBoxColumn
34
+ Binding="{Binding AuthMember}"
35
+ Header="AuthMember"
36
+ IsReadOnly="True" />
37
+
38
+ <!-- 編集はしたい場合(Resourcesの記述は不要) -->
39
+ <DataGridTemplateColumn Header="AuthMember">
40
+ <DataGridTemplateColumn.CellStyle>
41
+ <Style TargetType="{x:Type DataGridCell}">
42
+ <Setter Property="IsTabStop" Value="False" />
43
+ </Style>
44
+ </DataGridTemplateColumn.CellStyle>
45
+ <DataGridTemplateColumn.CellTemplate>
46
+ <DataTemplate>
47
+ <CheckBox
48
+ HorizontalAlignment="Center"
49
+ VerticalAlignment="Center"
50
+ IsChecked="{Binding AuthMember, UpdateSourceTrigger=PropertyChanged}"
51
+ IsTabStop="False" />
52
+ </DataTemplate>
53
+ </DataGridTemplateColumn.CellTemplate>
54
+ </DataGridTemplateColumn>
55
+ </DataGrid.Columns>
56
+ </DataGrid>
57
+ </Grid>
58
+ </Window>
59
59
  ```