我有一个已定义的DataTemplate的ItemsControl。我的ItemsControl定义如下所示:
<ItemsControl x:Name="myItemsControl" ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<CheckBox x:Name="myCheckBox" Content="{Binding Name}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
这是我的DataTemplate的简化版本。无论如何,当用户单击页面上的按钮时,我想循环遍历myItemsControl中的项目并确定是否选中了与该项目关联的CheckBox元素。
如何确定是否检查了ItemsControl中特定项目的CheckBox?
谢谢!
答案 0 :(得分:1)
向数据类添加属性并对其进行数据绑定,然后迭代集合本身。
public class myDataClass
{
public string Name { get; set;}
public bool IsSomething { get; set; }
}
<CheckBox x:Name="myCheckBox" Content="{Binding Name}" IsChecked="{Binding IsChecked, Mode=TwoWay}" />
答案 1 :(得分:0)
您可以尝试传统迭代:
public bool? TestMyCheckbox(string bindingName)
{
foreach (var item in myItemsControl.Items)
{
if (item.GetType() == typeof(CheckBox))
{
var checkbox = (CheckBox)item;
if (checkbox.Content.Equals(bindingName))
{
return (checkbox.IsChecked);
}
}
}
return null;
}
Additionaly(这可能更符合您的需求)您可以查找已检查的复选框绑定列表:
public IEnumerable<object> TestMyCheckboxes(ItemsControl control)
{
return from Control x in control.Items
where x.GetType().Equals(typeof(CheckBox)) && ((CheckBox)x).IsChecked == true
select ((CheckBox)x).Content;
}