DataGrid
은 데이터베이스에서 채워지는 CollectionViewSource
에 바인딩되어 있습니다. 이러한 항목 중 일부는 "활성"이며 다른 항목은 "비활성"입니다. 비활성 행에 다른 전경색을 지정하고 싶습니다. 색상은 선택된 행을 적용하지 않습니다. System.HighlightTextBrushKey
은 강조 표시된 색상을 변경하려는 시도를 무시하는 것 같습니다. 다음은 선택되지 않은 셀에서 작동하는 코드입니다.선택한 DataGrid 행의 조건부 전경색 색
<DataGrid.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="{StaticResource ThemeHighlightColor}"/>
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveSelectionHighlightBrushKey}" Color="{StaticResource ThemeHighlightColor}"/>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=active}" Value="False">
<Setter Property="Foreground" Value="DarkOrchid"/>
<Setter Property="FontWeight" Value="DemiBold"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=active}" Value="True">
<Setter Property="Foreground" Value="Black"/>
<Setter Property="FontWeight" Value="Normal"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
상기 경우에서, "비활성"행을 선택한 경우에도 DemiBold 폰트에 대해 수행되지만, 단지 비 선택 행들은 DarkOrchid 색 취할. 대신, 그들은 검은 색으로 SystemColors.HighlightTextBrushKey
색을 사용합니다. 명시 적으로 상태를 명시하지 않더라도이 선택된 행은 기본값 SystemColors.HighlightTextBrushKey
흰색을 사용합니다.
위의 DataTriggers
대신 MultiTrigger
을 사용해 보았습니다.하지만 똑같은 문제 (글꼴은 굵게 표시되지만 검은 색으로 남습니다)가 있습니다. 여기에 MultiTrigger
:
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=active}" Value="False"/>
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsSelected}" Value="True"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="Foreground" Value="DarkOrchid"/>
<Setter Property="FontWeight" Value="DemiBold"/>
</MultiDataTrigger.Setters>
</MultiDataTrigger>
어디서나 해결책을 찾을 수 없습니다. 선택한 행의 전경색을 일부 바운드 값에서 조건부로 만들 수있는 방법이 있습니까?
DataGrid.Resources에서 HighlightTextBrushKey를 DarkOrchid로 설정하려고 했습니까? 예를 들어, Dark Orchid로 선택된 행을 모두 바꿉니다. –
sthotakura
비활성이고 선택된 행만 원합니다. –
아, 네 말이 맞아. – sthotakura