2016-01-06 74 views
2

我有一組50 CheckBoxes放置在TabItem內。點擊一個按鈕,我需要通過CheckBoxes環和基於CheckBox.Ischeckedtruefalse,它的相關變量將被設置爲0或1。Loop Through TabItem CheckBoxes

下面是一些代碼我一起開始嘗試開始;

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 - 這上升到Priv50,所以Priv1, Priv2, Priv3等等等等,我真的不希望有做的是做一個If循環對所有50 CheckBoxes並設置其相關Priv

我有兩個問題,我如何循環遍歷TabItem中的所有50 CheckBoxes?我如何編碼newPrivlegeModel.Priv1以便它們全部自動更新?例如,newPrivlegeModel.Priv + i不起作用,所以我該如何解決這個問題?

+0

您可以通過利用WPF的強大約束力的系統解決這一確切的問題:每個複選框的財產器isChecked綁定到其相應的財產EmployeePrivilegeModel。轉換器可用於在布爾值和整數之間進行轉換。 MVVM模式是在WPF中執行此操作的正統方法。 –

+0

你應該使用收集和綁定 – Paparazzi

+0

我已經開始使用集合並綁定到其他地方,唯一的問題是有5個'TabItems'每個都有50個'CheckBoxes',所以我需要250個綁定元素而不是50個。 – CBreeze

回答

0

爲什麼不使用Dictionary而不是ofEmployeePrivilegeModel'?

我有一組50個CheckBoxes放在TabItem中。在點擊一個按鈕時,我需要循環檢查框,並根據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++; 
    } 
} 
+0

我試圖使用EmployeePrivilegeModel的主要原因是因爲我需要在我的MySQL數據庫中更新它們。 – CBreeze

+0

此外,這並不能解決我如何循環瀏覽「TabItem」上的所有「CheckBoxes」。 – CBreeze

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); 
    } 
} 
+0

我假設我會循環'PrivList'來決定添加到'MySQL'所需的值? – CBreeze

+0

是的。 PrivList <0>將映射到您的數據庫中的第一列,PrivList <1>到第二列等 –

+0

好的謝謝。你是否也知道如何遍歷'TabItem'上的所有'CheckBoxes'?只做這件事現在不起作用:'foreach(在companyTabItem中的CheckBox c)'' – CBreeze