DataGrid에서 선택한 행의 기본 배경색이 너무 어두워 읽을 수 없습니다. 어쨌든 재정의 할 수 있습니까?
이것을 시도
<dg:DataGrid.RowStyle>
<Style TargetType="{x:Type dg:DataGridRow}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True" >
<Setter Property="Background" Value="Gainsboro" />
</Trigger>
</Style.Triggers>
</Style>
</dg:DataGrid.RowStyle>
그러나 여전히 아무것도 …
답변
위의 솔루션은 필자의 경우 각 셀 주위에 파란색 테두리를 남겼습니다.
이것은 나를 위해 일한 솔루션입니다. 매우 간단합니다 DataGrid
.에 추가하십시오 . a SolidColorBrush
에서 선형 그라디언트와 같은 다른 브러시로 변경할 수 있습니다 .
<DataGrid.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
Color="#FF0000"/>
</DataGrid.Resources>
답변
알았다. DataGrid.Resources 섹션에 다음을 추가하십시오.
<DataGrid.Resources>
<Style TargetType="{x:Type dg:DataGridCell}">
<Style.Triggers>
<Trigger Property="dg:DataGridCell.IsSelected" Value="True">
<Setter Property="Background" Value="#CCDAFF" />
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
답변
@Seb Kade의 답변에 대한 확장으로 다음을 사용하여 선택 및 선택되지 않은 행의 색상을 완전히 제어 할 수 있습니다 Style
.
<Style TargetType="{x:Type DataGridRow}">
<Style.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" />
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="Black" />
</Style.Resources>
</Style>
물론 원하는 색상을 입력 할 수 있습니다. 이는 s Style
와 같은 다른 수집 항목에도 적용됩니다 ListBoxItem
( 예를 들어 교체 TargetType="{x:Type DataGridRow}"
하는 TargetType="{x:Type ListBoxItem}"
경우).
답변
나는이 문제가 있었고 머리카락이 거의 찢어졌고 그물에서 적절한 대답을 찾을 수 없었습니다. WPF DataGrid에서 선택한 행의 배경색을 제어하려고했습니다. 그냥하지 않을 것입니다. 필자의 경우 데이터 그리드에 CellStyle이 있고 CellStyle이 내가 설정 한 RowStyle을 대체했기 때문입니다. 흥미롭게도 CellStyle은 배경색을 설정하지 않았기 때문에 RowBackground 및 AlternateRowBackground 속성에 의해 빙 설정되었습니다. 그럼에도 불구하고 선택한 행의 배경색을 설정하려고 시도해도 전혀 작동하지 않았습니다.
<DataGrid ... >
<DataGrid.RowBackground>
...
</DataGrid.RowBackground>
<DataGrid.AlternatingRowBackground>
...
</DataGrid.AlternatingRowBackground>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Pink"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Foreground" Value="{Binding MyProperty}" />
</Style>
</DataGrid.CellStyle>
선택한 행의 원하는 스타일을 행 스타일에서 셀 스타일로 옮길 때 작동했습니다.
<DataGrid ... >
<DataGrid.RowBackground>
...
</DataGrid.RowBackground>
<DataGrid.AlternatingRowBackground>
...
</DataGrid.AlternatingRowBackground>
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Foreground" Value="{Binding MyProperty}" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Pink"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
누군가 같은 문제가있는 경우에 대비하여 게시하십시오.
답변
기본 IsSelected 트리거는 Background, Foreground & BorderBrush의 3 가지 속성을 변경합니다. 배경뿐만 아니라 테두리를 변경하려면 스타일 트리거에 포함하십시오.
<Style TargetType="{x:Type dg:DataGridCell}">
<Style.Triggers>
<Trigger Property="dg:DataGridCell.IsSelected" Value="True">
<Setter Property="Background" Value="#CCDAFF" />
<Setter Property="BorderBrush" Value="Black" />
</Trigger>
</Style.Triggers>
</Style>
답변
행 선택 이벤트가 작동하지 않는 이유 중 일부가 작동하지 않습니다.
- DataGridCell에 대한 스타일 설정
- 템플릿 열 사용
- 트리거는 DataGridRow에서 설정됩니다.
이것이 나를 도왔습니다. DataGridCell의 스타일 설정
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="Green"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
</Style.Triggers>
</Style>
그리고 내부에 레이블이있는 템플릿 열을 사용했기 때문에 RelativeSource 바인딩을 사용하여 Foreground 속성을 컨테이너 Foreground에 바인딩했습니다.
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label Content="{Binding CategoryName,
Mode=TwoWay,
UpdateSourceTrigger=LostFocus}"
Foreground="{Binding Foreground,
RelativeSource={RelativeSource Mode=FindAncestor,
AncestorLevel=1,
AncestorType={x:Type DataGridCell}}}"
Width="150"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
답변
ControlBrushKey를 시도했지만 선택하지 않은 행에서는 작동하지 않습니다. 선택되지 않은 행의 배경은 여전히 흰색입니다. 그러나 행 스타일을 재정의해야한다는 것을 알았습니다.
<DataGrid x:Name="pbSelectionDataGrid" Height="201" Margin="10,0"
FontSize="20" SelectionMode="Single" FontWeight="Bold">
<DataGrid.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#FFFDD47C"/>
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="#FFA6E09C"/>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Red"/>
<SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="Violet"/>
</DataGrid.Resources>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="Background" Value="LightBlue" />
</Style>
</DataGrid.RowStyle>
</DataGrid>