Вопрос

Я добавляю флажки динамически для Silverlight StackPanel Object:

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

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

Это было полезно?

Решение

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

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

Тогда вы можете иметь коллекцию этих вариантов, как это:

var options = new ObservableCollection<Option>();

Как только это заполнено, вы можете связать наблюдательную технику к элементамControl:

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

Этот XAML создаст флажки для вас для Ever Ever, который вы добавили в коллекцию вариантов. Действительно, вы можете спросить вас с коллекцией вариантов, какие параметры были выбраны:

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

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

Другие советы

Вы можете использовать DataBinding в список флажков. Что-то вроде этого:

Используйте ListBox, чтобы создать список проверки:

 <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 для наблюдательного элемента для наблюдателей с вашим объектом

chkList.ItemsSource = ....
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top