【发布时间】:2020-12-27 05:00:14
【问题描述】:
我正在开发一个 C# WPF 项目,我正在寻找一种将 Uncheck 和 Check 事件添加到 datagridCheckboxColumn 的技巧,我已经找到了很多解决方案,但我还没有得到我真正需要的东西。
我的目标是用灰色为每个选中的行着色,并用白色(数据网格的默认颜色)为用户的每个未选中的行着色。
选中行的事件完美运行,当我检查 datagridCheckboxColumn 时,该行被着色。
我正在寻找未选中事件的解决方案。
XAML 代码
<DataGridCheckBoxColumn Header="Choose" x:Name="choose">
<DataGridCheckBoxColumn.CellStyle>
<Style TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
<EventSetter Event="CheckBox.Checked" Handler="OnChecked"/>
</Style>
</DataGridCheckBoxColumn.CellStyle>
</DataGridCheckBoxColumn>
C# 代码
private void OnChecked(object sender, RoutedEventArgs e)
{
for (int i = 0; i < datagridView.Items.Count; i++)
{
DataGridRow row = (DataGridRow)datagridView.ItemContainerGenerator.ContainerFromIndex(i);
CheckBox ch = (CheckBox)datagridView.Columns[0].GetCellContent(row);
bool ischecked = (bool)ch.IsChecked;
if (ischecked)
{
row.Background = Brushes.Gray;
}
}
}
【问题讨论】: