Silverlight + ItemsControl + Get Control Значение свойства - PullRequest
1 голос
/ 22 марта 2010

У меня есть ItemsControl с DataTemplate, который был определен. Мое определение 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, связанный с элементом.

Как определить, проверен ли CheckBox для определенного элемента в ItemsControl?

Спасибо!

Ответы [ 2 ]

1 голос
/ 22 марта 2010

Добавьте свойство в свой класс данных и свяжите его с данными, затем выполните итерацию по самой коллекции.

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}" />
0 голосов
/ 22 марта 2010

Вы можете попробовать что-то вроде традиционной итерации:

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

Дополнительно (это может лучше соответствовать вашим потребностям) вы можете посмотреть список привязок флажков, которые отмечены:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...