Извлечение элементов из списка со списком элементов - PullRequest
0 голосов
/ 01 марта 2012

Я создаю приложение WPF. У меня есть список с элементами флажков внутри, и я должен иметь возможность получить значение флажков (независимо от того, проверил ли пользователь их или нет). Вот мой код MainWindow.

    <ListBox Name="lbFacilities" Grid.Row="3" Grid.Column="1" Height="85">
        <CheckBox>Hiking</CheckBox>
        <CheckBox>Swimming</CheckBox>
        <CheckBox>Skiing</CheckBox>
        <CheckBox>Camping</CheckBox>
        <CheckBox>Lodging</CheckBox>
    </ListBox>

Как я могу добавить эти элементы-флажки (Пешие прогулки, Плавание и т. Д.) В мой код C # как типы данных bool?

ОБНОВЛЕНИЕ - Я попробовал tsells «легким» способом, думая, что это сработает для меня, но это не сработало. Джастин сказал, что это работает для него, так что вот мой код сейчас.

<ListBox Name="lbFacilities" Grid.Row="3" Grid.Column="1" Height="85">
        <CheckBox Name="chbHiking">Hiking</CheckBox>
        <CheckBox Name="chbSwimming">Swimming</CheckBox>
        <CheckBox Name="chbSkiing">Skiing</CheckBox>
        <CheckBox Name="chbCamping">Camping</CheckBox>
        <CheckBox Name="chbLodging">Lodging</CheckBox>
    </ListBox>

Тогда в моем коде C #

bool isHiking;
isHiking = chbHiking.IsChecked;

Вторая строка, присваивающая isHiking, выдает ошибку, говоря, что chbHiking не существует.

Ответы [ 3 ]

2 голосов
/ 01 марта 2012

Изучите привязку данных и шаблонизаторы данных , вам нужно будет создать список элементов с логическим свойством и отображаемой строкой, а затем связать ListBox.ItemsSource к этому и создайте ItemTemplate, который создает CheckBoxes, связывающий IsChecked и Content с вашими элементами.

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

0 голосов
/ 01 марта 2012

Полагаю, вы просто хотите узнать, проверены они или нет.Если это так, то вы можете сделать это:

foreach (var item in lbFacilities.Items)
{
    CheckBox cb = item as CheckBox;
    bool thisCBCheckedValue = cb.IsChecked;
}
0 голосов
/ 01 марта 2012

У вас есть два варианта.

1) Легко

<CheckBox Name="cbHiking">Hiking</CheckBox>

В коде позади

bool isHiking = cbHiking.IsChecked;

2) Сложнее - привязка данных

<CheckBox Name="cbHiking" IsChecked="{Binding Path=MyHiking}">Hiking</CheckBox>

In Code Behind (обычно модель представления)

private bool _myhiking;
public bool MyHiking {get {return _myhiking;} set {_myhiking = value;   //DoPropertyCHanged}

Обратите внимание, хотя я бы не рекомендовал делать это таким образом для производственного кода. Я пропустил тот факт, что они были в списке на первый взгляд. Лучшим вариантом будет использовать CheckedListBox, а затем связать его с коллекцией объектов, содержащих описание (имя) и значение того, были ли они выбраны.

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