【发布时间】:2020-05-13 14:23:30
【问题描述】:
我为格式化数字创建了以下样式:
<Style x:Key="NumericCellStyle" TargetType="DataGridCell">
<Setter Property="Foreground" Value="{Binding RelativeSource={RelativeSource Mode=Self}, Path=Content.Text, Converter={StaticResource NegativesToRedConverter}}"/>
<Setter Property="TextBlock.TextAlignment" Value="Right"/>
<Setter Property="ContentStringFormat" Value="N2"/>
</Style>
它实现了文本右对齐、格式为“N2”且负数的前景色为红色的外观。
但是,当我的DataGrid 中的一行被选中时,背景变为蓝色,前景变为白色,但我应用自定义样式的列除外。那里保持红色。红色与蓝色对眼睛很不利,所以我希望它在被选为其他未设置样式的单元格时变成白色。
我尝试通过在我的样式中添加触发器来解决这个问题:
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Foreground" Value="White" />
</Trigger>
</Style.Triggers>
这可以解决问题,但是!当窗口处于非活动状态时,选定的行背景变为灰色,但前景保持白色,看起来很奇怪。
我寻找一种方法来读取此 DataGrid 所在的 UserControl 的焦点状态,但我没有运气。哦 WPF 向导,我该如何解决这个问题?
提前致谢:)
【问题讨论】: