【发布时间】:2019-05-03 19:21:06
【问题描述】:
我已经构建了一个动态生成的标签/复选框列表。
标签内容从带有一些应用程序名称的列表中获取他的内容。 Checkbox(es) 共享一个 CheckBox_Click-Event,当我点击其中一个复选框时触发。我现在遇到的问题是,我无法确定单击了哪个复选框。因为我生成控件,所以无法通过控件后面的绑定来命名。我在通过代码创建 gui 方面并不那么有经验。希望大家能帮帮我。
// 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>
因为我已经有一个文件名列表,我想我可以绑定复选框上的名称,所以我知道单击了哪个复选框并且可以管理正确的程序名。
【问题讨论】: