首页 > 解决方案 > 未触发数据网格上复选框的未选中事件

问题描述

我为数据网格上的复选框处理了选中/未选中的事件

        <DataGridCheckBoxColumn Header="Emp Acknowlegement" Binding="{Binding Path=Trained}" Width="*">
            <DataGridCheckBoxColumn.ElementStyle>
                <Style TargetType="CheckBox">
                    <Setter Property="IsEnabled" Value="False"/>
                    <EventSetter Event="Checked" Handler="empAck_OnCheck"/>
                    <EventSetter Event="Unchecked" Handler="empAck_OnUncheck"/>
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding isUser}" Value="1">
                            <Setter Property="IsEnabled" Value="True" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </DataGridCheckBoxColumn.ElementStyle>
        </DataGridCheckBoxColumn>
        <DataGridCheckBoxColumn Header="Effectiveness Check" Binding="{Binding Path=EffectiveCheck}" Width="*">
            <DataGridCheckBoxColumn.ElementStyle>
                <Style TargetType="CheckBox">
                    <Setter Property="IsEnabled" Value="False"/>
                    <EventSetter Event="Checked" Handler="effAck_OnCheck"/>
                    <EventSetter Event="Unchecked" Handler="effAck_OnUncheck"/>
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Level}" Value="2">
                            <Setter Property="IsEnabled" Value="True" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </DataGridCheckBoxColumn.ElementStyle>
        </DataGridCheckBoxColumn>

该复选框会触发这两个事件。第一个仅触发 Checked 事件。我将处理程序交换为 Checked 和 Unchecked 以查看它是否是导致问题的未经检查的方法,但它运行正确。看来事件没有触发。第二个盒子的代码是相同的,但它会按预期触发。

    private void empAck_OnCheck(object sender, RoutedEventArgs e)
    {
        MessageBox.Show("Checked");

    }

    public void empAck_OnUncheck(object sender, RoutedEventArgs e)
    {
        MessageBox.Show("Unchecked");

    }

标签: c#wpf

解决方案


推荐阅读