Как настроить область щелчка в ячейке сетки данных WPF? - PullRequest
2 голосов
/ 10 июня 2011

В таблице данных, где один столбец доступен для редактирования, а другие столбцы доступны только для чтения.

Не редактируемый столбец привязан к десятичному полю с нулевым значением в коллекции и изначально имеет значение NULL, поэтому в столбце отсутствует значение.

При попытке щелкнуть эту ячейку, чтобы перевести сетку данных в режим редактирования, цель щелчка очень мала и ее трудно щелкнуть.

Как установить размер цели щелчка для такой ячейки?

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

Ответы [ 2 ]

1 голос
/ 12 июня 2011

В сетке данных используйте Selection Unit = "FullRow".Определите стиль DataGridCell по умолчанию и основывайте на нем все другие стили DataGridCell.Затем добавьте стиль строки в DataGrid.Это дает вам возможность выбрать всю строку и иметь другой цвет для ячейки Focused.И весь фон ячейки имеет цвет, указанный в стиле.

   <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>
0 голосов
/ 11 июня 2011

Если вы определяете свои собственные столбцы в DataGrid, вы можете установить свойство MinWidth для столбца, чтобы всегда было место для щелчка, даже если значение пустое или очень короткое.Например:

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