Silverlight + ItemsControl +获取控件属性值

时间:2010-03-22 00:32:39

标签: silverlight

我有一个已定义的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?

谢谢!

2 个答案:

答案 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;
}