如何设置WPF数据网格单元格的可点击区域?

时间:2011-06-10 15:09:26

标签: wpf wpfdatagrid

在数据网格中,其中一列可编辑,其他列为只读。

非可编辑列绑定到集合中可为空的十进制字段,并且最初为NULL,因此列中不存在任何值。

尝试单击此单元格以使数据网格进入编辑模式时,单击目标非常小并且难以单击。

如何设置此类单元格的点击目标尺寸?

I would like the clickable area to be the entire cell, highlighted as shown

2 个答案:

答案 0 :(得分:1)

在数据网格中,使用Selection Unit =“FullRow”。定义一个默认的DataGridCell样式,并在此基础上建立所有其他DataGridCell样式。然后向DataGrid添加行样式。这为您提供了一种选择整行的方法,并为聚焦单元格提供了另一种颜色。并且整个单元格背景采用样式中指定的颜色。

   <Style TargetType="DataGridCell" x:Key="DgcDefault">
   <Setter Property="BorderBrush"  Value="Transparent"/>
   <Setter Property="Background" Value="Transparent"/>
   <Setter Property="Foreground" Value="Black"/>
   <Style.Triggers>
      <Trigger Property="IsFocused" Value="True">
        <Setter Property="Background" Value="#FF83B2DD"/>
       </Trigger>
   </Style.Triggers>
</Style>

<DataGrid.RowStyle>
   <Style TargetType="DataGridRow">
      <Setter Property="Background" Value="White"/>
      <Style.Triggers>
         <Trigger Property="AlternationIndex" Value="1">
            <Setter Property="Background" Value="AliceBlue"/>
         </Trigger>
         <Trigger Property="IsSelected" Value="True">
            <Setter Property="Background" Value="LightBlue"/>
         </Trigger>
      </Style.Triggers>
   </Style>
</DataGrid.RowStyle>

答案 1 :(得分:0)

如果要在DataGrid中定义自己的列,则可以在列上设置MinWidth属性,以便始终可以单击空间,即使值为空或非常短。例如:

<DataGrid ItemsSource="{Binding Customers}" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn
            MinWidth="100" 
            Header="Phone"
            Binding="{Binding Path=PhoneNumber}" />
    </DataGrid.Columns>
</DataGrid>