สาเหตุบางประการที่ฉันพบว่าเหตุการณ์ที่เลือกแถวไม่ทำงาน
- สไตล์ถูกตั้งค่าสำหรับ DataGridCell
- ใช้คอลัมน์ Templated
- ทริกเกอร์ถูกตั้งค่าที่ 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>
และเนื่องจากฉันใช้คอลัมน์เทมเพลตที่มีป้ายกำกับอยู่ข้างในฉันจึงผูกคุณสมบัติ Foreground กับคอนเทนเนอร์ Foreground โดยใช้การเชื่อม RelativeSource:
<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>