UI 控件的常规约定是,当父控件处于焦点时,选定的文本、项目或行颜色鲜艳(例如,亮蓝色),而当控件失焦时,将其不饱和/暗淡(例如,淡蓝色)。
与 相比ListView/GridView
,WPFDataGrid
控件默认不遵循此约定。即使同一窗口中的另一个控件清晰地聚焦,选定的行也会显得明亮。
我认为这应该只是添加一个触发器来DataGridCell
设置背景{DynamicResource {x:Static SystemColors.ControlBrushKey}}
是否DataGrid
失焦,但我不知道要检查哪个属性。IsFocused
听起来像我想要的,但这不起作用。IsMouseCaptured
似乎也不起作用。
这是我尝试的最新触发器:
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition
Binding="{Binding IsSelected}"
Value="True" />
<Condition
Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=wt:DataGrid}, Path=IsFocused}"
Value="False"/>
</MultiDataTrigger.Conditions>
<Setter
Property="BorderBrush"
Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
<Setter
Property="Background"
Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
<Setter
Property="Foreground"
Value="Gray" />
</MultiDataTrigger>
当单元格被选中并且父控件不在焦点上时,我该怎么做才能使此触发器使单元格变暗?