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

时间:2019-02-28 14:55:02

标签: c# wpf checkbox

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

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

"Checkbox1_Checked(object sender, RoutedEventArgs e)" 

并在列表中添加复选框的名称(如果未选中该复选框,则将其从列表中删除)。

还有其他方法可以获取所有选中的复选框吗?像

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

1 个答案:

答案 0 :(得分:4)

您可以为此使用LINQ。    例如,假设您将父控件命名为grid

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

或者,如果您不想命名它-假设您的容器源自Panel(例如GridStackPanel ...),则只需像这样强制转换< / p>

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