如何使所有列都不可聚焦
How to make all the columns non-focusable
要使列不可聚焦,可以设置其单元格的样式,如图所示in some answers on Whosebug。但是,如果希望设置 all all 列的单元格,这开始看起来像是不必要的代码重复,因为单元格样式需要要添加到每个列定义中。
有没有办法一次设置所有单元格(可能是所有列的单元格,或者所有数据网格)的单元格样式?
我已尝试执行以下操作,但它在编译期间产生了解析错误,猜测是因为我所指的样式在访问它时尚未定义。
<DataGrid AutoGenerateColumns="False"
IsReadOnly="True"
CellStyle="{StaticResource NoFocusOncell}"
ItemsSource="{...}">
<DataGrid.Resources>
<Style x:Key="NoFocusOnCell"
TargetType="{x:Type DataGridCell}">
<Setter Property="IsHitTestVisible" Value="False" />
</Style>
...
</DataGrid.Resources>
...
</DataGrid>
您可以使用隐式样式(看看 here)。
您只需通过这种方式从样式和 CellStyle 属性 中删除键:
<DataGrid AutoGenerateColumns="False"
IsReadOnly="True"
ItemsSource="{Binding}">
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="IsHitTestVisible" Value="False" />
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
...
</DataGrid.Columns>
</DataGrid>
通过这种方式,您可以一次性声明您的样式。希望对你有帮助。
要使列不可聚焦,可以设置其单元格的样式,如图所示in some answers on Whosebug。但是,如果希望设置 all all 列的单元格,这开始看起来像是不必要的代码重复,因为单元格样式需要要添加到每个列定义中。
有没有办法一次设置所有单元格(可能是所有列的单元格,或者所有数据网格)的单元格样式?
我已尝试执行以下操作,但它在编译期间产生了解析错误,猜测是因为我所指的样式在访问它时尚未定义。
<DataGrid AutoGenerateColumns="False"
IsReadOnly="True"
CellStyle="{StaticResource NoFocusOncell}"
ItemsSource="{...}">
<DataGrid.Resources>
<Style x:Key="NoFocusOnCell"
TargetType="{x:Type DataGridCell}">
<Setter Property="IsHitTestVisible" Value="False" />
</Style>
...
</DataGrid.Resources>
...
</DataGrid>
您可以使用隐式样式(看看 here)。 您只需通过这种方式从样式和 CellStyle 属性 中删除键:
<DataGrid AutoGenerateColumns="False"
IsReadOnly="True"
ItemsSource="{Binding}">
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="IsHitTestVisible" Value="False" />
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
...
</DataGrid.Columns>
</DataGrid>
通过这种方式,您可以一次性声明您的样式。希望对你有帮助。