要使列不可聚焦,可以设置其单元格的样式,如in some answers on StackOverflow所示。但是,如果希望将所有列的全部设置为所有,则开始看起来像一个不必要的代码重复,因为需要将单元格样式添加到每个列定义
有没有办法同时为所有单元格(所有列的单元格,或者所有数据网格)设置单元格样式?
我尝试过以下操作,但是在编译期间它创建了一个解析错误,猜测因为我所指的样式在访问它时尚未定义。
<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>
答案 0 :(得分:1)
您可以使用隐式样式(看看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>
通过这种方式,您可以只声明一次您的风格。我希望它可以帮到你。