【发布时间】:2016-04-10 16:19:27
【问题描述】:
我有一组 50 个 CheckBoxes 放在 TabItem 中。单击按钮时,我需要遍历CheckBoxes,并根据CheckBox.Ischecked 是true 还是false,将其相关变量设置为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 - 这上升到Priv50,所以Priv1, Priv2, Priv3 等等。我真正不想做的是为所有50个CheckBoxes做一个If循环并设置它们的相关Priv。
我有两个问题,如何循环遍历TabItem 中的所有50 个CheckBoxes?我怎样才能对newPrivlegeModel.Priv1 进行编码,以便它们都自动更新?例如,newPrivlegeModel.Priv + i 不起作用,我该如何解决这个问题?
【问题讨论】:
-
您可以通过利用 WPF 强大的绑定系统来解决这个确切的问题:将每个复选框的 IsChecked 属性绑定到其相应的 EmployeePrivilegeModel 属性。转换器可用于在布尔值和整数之间进行转换。 MVVM 模式是在 WPF 中执行此操作的正统方法。
-
你应该使用集合和绑定
-
我已经开始在其他地方使用集合和绑定,唯一的问题是有 5 个
TabItems,每个有 50 个CheckBoxes,所以我需要 250 个绑定元素而不是 50 个。跨度>