全新的SO和全新的WPF数据网格。
我一直在搜索有关Datagrid的所有已打开的主题,但我找不到任何问题的答案。
我试图将数据显示到数据网格中。到现在为止还挺好。 我试图让用户在datagrid中选择单元格。到现在为止还挺好。 我想在特定列上禁用选择单元格。
请参阅链接中的图片。
如何在Torque列或Average列上禁用选择单元格,让用户只选择Mes1
Mes2
Mes3
列上的单元格
答案 0 :(得分:2)
如果要阻止某些列中的单元格被选中,可以使用DataGridCell
样式将这些单元格的IsHitTestVisible
属性设置为true
:
<DataGrid x:Name="dataGrid1">
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<DataTrigger Binding="{Binding Column.Header, RelativeSource={RelativeSource Self}}" Value="Torque">
<Setter Property="IsHitTestVisible" Value="False"/>
</DataTrigger>
<DataTrigger Binding="{Binding Column.Header, RelativeSource={RelativeSource Self}}" Value="Average">
<Setter Property="IsHitTestVisible" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
</DataGrid>
我正在玩代码。但是当我点击例如Column Mes 1中的一个单元格,然后使用键盘进行导航时,可以聚焦Torque和Average列的单元格: - (
我猜你必须将IsEnabled
属性设置为false
然后:
<DataTrigger Binding="{Binding Column.Header, RelativeSource={RelativeSource Self}}" Value="Torque">
<Setter Property="IsHitTestVisible" Value="False"/>
<Setter Property="IsTabStop" Value="False"/>
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
答案 1 :(得分:1)
可以使用CellTemplate,在下面的示例中,其中一个列单元格将是一个图像:
<DataGrid ItemsSource="{Binding Customers}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name}" />
<DataGridTemplateColumn Header="Image" Width="SizeToCells" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding Image}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>