C# 如何获取WPF中的所有复选框?

C# 如何获取WPF中的所有复选框?,c#,wpf,checkbox,C#,Wpf,Checkbox,我试图找到解决这个问题的办法,但没有成功。我只找到了不适用于WPF的WinForms解决方案 我有一个简单的表单,上面有一些复选框。我想知道勾选了哪些复选框。我知道的唯一方法是为每个复选框创建一个方法,如 "Checkbox1_Checked(object sender, RoutedEventArgs e)" 并在列表中添加复选框的名称,如果复选框未选中,则将其从列表中删除 有没有其他方法可以让我选中所有复选框?差不多 foreach (var cb in this.Controls) {

我试图找到解决这个问题的办法,但没有成功。我只找到了不适用于WPF的WinForms解决方案

我有一个简单的表单,上面有一些复选框。我想知道勾选了哪些复选框。我知道的唯一方法是为每个复选框创建一个方法,如

"Checkbox1_Checked(object sender, RoutedEventArgs e)" 
并在列表中添加复选框的名称,如果复选框未选中,则将其从列表中删除

有没有其他方法可以让我选中所有复选框?差不多

foreach (var cb in this.Controls)
{
    if (cb is Checkbox && cb.IsCheked()) // blablabla
}

你可以用LINQ来做这个。 例如,假设您命名了父控件网格

var list = this.grid.Children.OfType<CheckBox>().Where(x => x.IsChecked == true);

你可以用LINQ来做这个。 例如,假设您命名了父控件网格

var list = this.grid.Children.OfType<CheckBox>().Where(x => x.IsChecked == true);

您不必为它们中的每一个创建方法。在您的情况下,一种方法就足够了。在WPF中,所有组件都存在于其他组件面板或派生组件(如网格、堆栈面板等)中。您必须获取面板的所有子项,以便将所有复选框获取到面板中,并验证是否选中了任何复选框,一个好的解决方案是实现@shawn的答案,您不必为它们中的每一个创建方法。在您的情况下,一种方法就足够了。在WPF中,所有组件都存在于其他组件面板或派生组件(如网格、堆栈面板等)中。您必须获取面板的所有子项,这样才能将所有复选框获取到面板中,并验证是否选中了任何复选框,一个好的解决方案是实现@ShawnThank you!你帮了大忙!非常感谢。你帮了大忙!