Как я могу добавить CheckBoxList в список <>?
У меня есть, например, список из 5 элементов флажка:
<ListBox x:Name="Listbox" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top">
<CheckBox x:Name="Item1" Content="Item1" Checked="Item1_Checked"/>
<CheckBox x:Name="Item2" Content="Item2" Checked="Item2_Checked"/>
<CheckBox x:Name="Item3" Content="Item3" Checked="Item3_Checked"/>
<CheckBox x:Name="Item4" Content="Item4" Checked="Item4_Checked"/>
<CheckBox x:Name="Item5" Content="Item5" Checked="Item5_Checked"/>
</ListBox>
Для каждого установленного флажка я хочу, чтобы элемент был добавлен в список с именем myList.
Итак, я попробовал это:
public MainWindow()
{
InitializeComponent();
}
List<string> myList;
private void Item1_Checked(object sender, RoutedEventArgs e)
{
myList.Add(Item1);
}
Проблема в том, что "Item1" не является объектом, поэтому его нельзя добавить в список объектов.
После того, как в моем списке есть несколько объектов, я хочу отсортировать их в определенном порядке, например по имени, и затем отобразить список в готовых шаблонах.
Какие-либо предложения?
Надеюсь, что вы понимаете меня, мой английский не идеален, и я новичок в C# и wpf:P
1 ответ
Вам нужно использовать Source
собственность RoutedEventsArgs
параметр передан проверенному обработчику. Также вы можете использовать один и тот же обработчик событий для всех флажков:
<ListBox x:Name="Listbox" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top">
<CheckBox x:Name="Item1" Content="Item1" Checked="Item_Checked"/>
<CheckBox x:Name="Item2" Content="Item2" Checked="Item_Checked"/>
<CheckBox x:Name="Item3" Content="Item3" Checked="Item_Checked"/>
<CheckBox x:Name="Item4" Content="Item4" Checked="Item_Checked"/>
<CheckBox x:Name="Item5" Content="Item5" Checked="Item_Checked"/>
</ListBox>
private void Item_Checked(object sender, RoutedEventArgs e)
{
myList.Add((e.Source as CheckBox).Name);
}
Элемент управления, инициировавший событие, находится в RoutedEventArgs.Source
, Вы должны привести его, конечно, к типу управления.
В вашем конкретном случае вы также можете использовать sender
, но обычно безопаснее полагаться на Source
имущество.