在选中WPF复选框时触发事件

ane*_*vil 6 c# wpf checkbox events

获取当前正在检查的内容的正确方法是什么CheckBox.到目前为止,我所做的事情不会对CheckBox所检查的项目触发任何事件:

<ListBox Grid.RowSpan="3" Grid.Column="2" Grid.ColumnSpan="5" Margin="2" ItemsSource="{Binding MachinePositionList}">
    <ListBox.ItemTemplate>
        <HierarchicalDataTemplate>
            <CheckBox Content="{Binding posID}" IsChecked="{Binding IsChecked, Mode=TwoWay}">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="Checked">
                        <i:InvokeCommandAction Command="{Binding CurrentCheckedPosition}" />
                    </i:EventTrigger>
                </i:Interaction.Triggers>                           
            </CheckBox>
       </HierarchicalDataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud)

非常感谢 :-).

Rhe*_*xis 5

您可以使用已检查的事件:

<CheckBox Name="myCheckBox" 
          Content="I am a checkbox!" 
          Checked="myCheckBox_Checked" 
          Unchecked="myCheckBox_Unchecked" />
Run Code Online (Sandbox Code Playgroud)

这些事件的代码是:

private void myCheckBox_Checked(object sender, RoutedEventArgs e)
{
    // ...
}

private void myCheckBox_Unchecked(object sender, RoutedEventArgs e)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

编辑:刚注意到您具有复选框的内容为“ {Binding posID}”,所以您可以(在复选框列表中)可以执行以下操作:

if (sender != null)
{
     int posID = Convert.ToInt32(((CheckBox)sender).Name);
}
Run Code Online (Sandbox Code Playgroud)

这将为您提供“ posID”,您也可以使用它来完成所需的操作。:D