我可以使WPF DataGridRow无法选择吗?

时间:2011-08-25 05:07:42

标签: wpf datagrid triggers styles

我的数据网格上有一个样式,可以根据属性绑定禁用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>

3 个答案:

答案 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>