我正在尝试找出如何使以下WPF DataGrid中的行不可聚焦。正如您所看到的,我尝试在DataGrid中添加<DataGrid.Resources>
部分,其中我指定了一个DataGrid单元格样式,但这并没有起作用。我错过了什么吗?
<DataGrid Name="grdResources"
AutoGenerateColumns="False" SelectionUnit="FullRow"
AlternatingRowBackground="LightBlue" CanUserDeleteRows="False" CanUserAddRows="False"
CanUserReorderColumns="False" ClipboardCopyMode="ExcludeHeader">
<DataGrid.Resources>
<DataGridTemplateColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Focusable" Value="False"/>
</Style>
</DataGridTemplateColumn.CellStyle>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTemplateColumn Header="Select" IsReadOnly="True" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="Select" Tag="{Binding}" Click="Select_Click"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Key" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate >
<DataTemplate>
<Label Content="{Binding Path=Key}"></Label>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Value" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate >
<DataTemplate>
<TextBlock TextWrapping="Wrap" Text="{Binding Path=Value}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
编辑
对于那些感兴趣的人,我最终覆盖了SelectedRow样式,以便在选中时不会突出显示该行。这是我的<DataGrid.Resources>
部分更改后的样子:
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Foreground" Value="Black"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BorderThickness" Value="1"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
DataGrid.Columns
中将单元格样式应用于应该是只读的列。<DataGridTextColumn CellStyle="{StaticResource NoFocusColumn}" ... />
- Rachel