Я создал динамически генерируемый ярлык / флажок-список.
Метка-контент получает свой контент из списка с некоторыми именами приложений. Флажки имеют один и тот же CheckBox_Click-Event, который срабатывает, когда я нажимаю один из флажков. Проблема, с которой я столкнулся сейчас, заключается в том, что я не могу определить, на каком флажке нажата кнопка. Поскольку я генерирую элементы управления, я не могу поставить имя через привязку за элементами управления. Я не настолько опытен в создании графического интерфейса пользователя. Надеюсь, вы, ребята, можете мне немного помочь.
// This part builds my label/combo-List through a FileInfo-List
Fields = new System.Collections.ObjectModel.ObservableCollection<Field>();
foreach (var app in GetPrograms())
{
Fields.Add(new Field() {Name = app.Name, Length = 100, Required = true});
}
FieldsListBox.ItemsSource = Fields;
// Here i got the Click-Event.. but i can't identify which Checkbox is clicked
private void CheckBox_Click(object sender, RoutedEventArgs e)
{
CheckBox senderChk = sender as CheckBox;
switch (senderChk.Name)
{
//case "checkBox1": // do something
//case "checkBox2": // do something
}
}
<!-- And finally the xaml-Code, note the Bindings on label and checkbox -->
<Grid>
<ListBox x:Name="FieldsListBox">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Label Content="{Binding Name}" VerticalAlignment="Center"></Label>
<CheckBox IsChecked="{Binding Checked}" Click="CheckBox_Click" Margin="5,0,0,0"></CheckBox>
</StackPanel>
Поскольку у меня уже есть список имен файлов, я подумал, что могу связать имена на флажках, поэтому я знаю, какой флажок был выбран, и могу управлять правильным именем программы.