我已经建立了一个动态生成的标签/复选框列表。
label-content从带有一些应用程序名称的列表中获取其内容。该复选框共享一个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>
因为我已经有了一个文件名列表,所以我认为我可以在复选框上绑定名称,因此我知道单击了哪个复选框并可以管理正确的程序名。
答案 0 :(得分:0)
您这样做是为了将选中的属性绑定到comboBox。
<CheckBox IsChecked="{Binding Checked}" ... ></CheckBox>
执行相同操作,然后将组合框的属性Uid(用于标识WPF中的控件)绑定如下:
<CheckBox ... Uid="{Binding Name}" ... ></CheckBox>
并在您的交换机中使用它。