循环TabItem CheckBoxes

时间:2016-01-06 14:23:49

标签: c# wpf checkbox

我有一组50 CheckBoxes位于TabItem内。点击按钮,我需要遍历CheckBoxes,并根据CheckBox.Ischeckedtrue还是false,它的相关变量将设置为a 0或1.

以下是我尝试开始的一些代码;

private void ApplyPrivilegeUpdateClick(object sender, RoutedEventArgs e)
{
    var newPrivilegeModel = new EmployeePrivilegeModel();
    int i = 0;
    foreach (CheckBox c in companiesTabItem)
    {
        if (c.IsChecked == true)
        {
            newPrivilegeModel.Priv1 = 1;
        }
        i++;
    }
}

newPrivlegeModel.Priv1 - 最多Priv50Priv1, Priv2, Priv3等等。我真正不想做的是做If循环对于所有50 CheckBoxes并设置相关的Priv

我有两个问题,如何遍历CheckBoxes中的所有50 TabItem?我如何编码newPrivlegeModel.Priv1以便它们全部自动更新?例如,newPrivlegeModel.Priv + i不起作用,我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

为什么不使用Dictionary代替ofEmployeePrivilegeModel'?

我有一组50个CheckBox,放在一个TabItem中。在按钮单击时,我需要遍历CheckBoxes并根据CheckBox.Ischecked是true还是false,它的相关变量将设置为0或1。

这是我开始尝试开始的一些代码;

private void ApplyPrivilegeUpdateClick(object sender, RoutedEventArgs e)
{
    var newPrivilegeModel = new Dictionary<string,int>();
    int i = 0;
    foreach (CheckBox c in companiesTabItem)
    {
        if (c.IsChecked == true)
        {
            if(newPrivilegeModel.ContainstKey("Priv"+(i + 1).ToString())){
              newPrivilegeModel["Priv"+(i + 1).ToString()]=1;
            }
            else
            {
              newPrivilegeModel.Add("Priv"+(i + 1).ToString(),1);
            }
        }
        i++;
    }
}

答案 1 :(得分:0)

将数组或列表添加到EmployeePrivilegeModel类以保存所有值。

var newPrivilegeModel = new EmployeePrivilegeModel();
newPrivilegeModel.PrivList = new List<bool>();
foreach (CheckBox c in companiesTabItem)
{
    if (c.IsChecked == true)
    {
        newPrivilegeModel.PrivList.Add(1);
    }
    else
    {
        newPrivilegeModel.PrivList.Add(0);
    }
}