开发者

Silverlight + ItemsControl + Get Control Property Value

I have an ItemsControl with a DataTemplate that has been defined. My ItemsControl definition looks like the following:

<ItemsControl x:Name="myItemsControl" ItemsSource="{Binding}">
  <ItemsControl.ItemTemplate>
    <DataTemplate>
      <Grid>
        <CheckBox x:Name="myCheckBox" Content="{Binding Name}" />
      </Grid>
    </DataTemplate>
  </ItemsControl.ItemTemplate>
</ItemsControl>

This is a si开发者_JS百科mplified version of my DataTemplate. Regardless, when a user clicks a button on the page, I want to loop through the items in myItemsControl and determine if the CheckBox element associated with the item is checked.

How do I determine if a CheckBox is checked for a specific item within an ItemsControl?

Thank you!


Add a property to your data class and databind it, then iterate over the collection itself.

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}" />


You can try something like traditional iteration:

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 (this may better fit your needs) you can look for a list of checkboxes bindings that are checked:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜