Как прочитать динамический добавленный флажок? - PullRequest
1 голос
/ 18 апреля 2010

Я добавляю флажки динамически в объект стека панели silverlight следующим образом:

foreach (String userName in e.Result)
{
    CheckBox ch = new CheckBox();
    ch.Name = userName;
    ch.Content = userName;
    ContentStackPanel.Children.Add(ch);
}

Как мне прочитать эти элементы управления, чтобы определить, какие из них проверены.

Ответы [ 2 ]

3 голосов
/ 18 апреля 2010

Вы можете использовать привязку данных к списку флажков. Примерно так:

Используйте список для создания контрольного списка:

 <ListBox x:Name="chkList" >
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal" >
                    <CheckBox Content="{Binding userName}" IsChecked="{Binding Checked, Mode=TwoWay}"></CheckBox>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

Затем в вашем коде просто установите chklist itemSource для ObservableCollection с вашим объектом

chkList.ItemsSource = ....
1 голос
/ 18 апреля 2010

Вам, вероятно, следует избегать создания флажков в таком коде. Кое-что, что может быть полезно для вас, это мини-ViewModel для флажка. Примерно так:

public class Option
{
   public string Text {get; set;}
   public bool IsChecked {get; set;}
}

Затем вы можете получить коллекцию этих опций, таких как:

var options = new ObservableCollection<Option>();

Когда это заполнено, вы можете привязать ObservableCollection к ItemsControl:

<ItemsControl ItemsSource="{Binding options}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <CheckBox Content="{Binding Text}" IsChecked="{Binding IsChecked}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

Этот XAML создаст CheckBoxes для вас навсегда, опцию, которую вы добавили в свою коллекцию опций. Самое замечательное в том, что теперь вы можете спросить коллекцию опций, какие опции были выбраны:

var selectedNames = from option in options
                    where option.IsChecked
                    select option.Text;

Использование привязки данных и шаблонов - это метод, с которым вам следует ознакомиться в Silverlight / WPF. Это действительно важная концепция, и она позволит вам делать удивительные вещи в вашем приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...