我的数据网格上有一个样式,可以根据属性绑定禁用DataGridRow。这使得行无法选择,这就是我想要的。但是,我仍然可以使用至少2种其他方式选择禁用的行。第一个是如果我在两个启用的行之间使用拖动动作来围绕禁用的行。第二个是如果我点击数据网格左上角的“全选”按钮。有没有办法让特定的行完全无法选择?
这就是我目前所拥有的:
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Binding="{Binding DisableMe}" Value="True">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
答案 0 :(得分:1)
使用SelectionChanged事件撤消选择怎么样?无论如何,我真的不认为有一种直截了当的方式。
您也可以更改行样式,使其即使被选中也会被取消选中,并通过代码将其过滤出来...
答案 1 :(得分:0)
我只是偶然发现了同一个问题的线程,我想指出你可以简单地将enabled设置为false。
答案 2 :(得分:0)
我认为这个问题没有任何适当的解决方案。但作为解决方法,您可以将DataGrid的“ IsHitTestVisible”属性绑定到“ IsEnabled”。
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="IsEnabled" Value="True" />
<Setter Property="IsHitTestVisible" Value="{Binding RelativeSource={RelativeSource Self},Path=IsEnabled}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding DisableMe}" Value="True">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>