Динамически добавьте label / checkBox-Combo и поместите код позади - PullRequest
0 голосов
/ 03 мая 2019

Я создал динамически генерируемый ярлык / флажок-список.

Метка-контент получает свой контент из списка с некоторыми именами приложений. Флажки имеют один и тот же 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>

Поскольку у меня уже есть список имен файлов, я подумал, что могу связать имена на флажках, поэтому я знаю, какой флажок был выбран, и могу управлять правильным именем программы.

1 Ответ

0 голосов
/ 03 мая 2019

Вы сделали это для привязки отмеченного свойства к comboBox.

<CheckBox IsChecked="{Binding Checked}" ... ></CheckBox>

Сделайте то же самое и привяжите UID свойства (используется для идентификации элементов управления в WPF) комбинированного списка следующим образом:

<CheckBox ... Uid="{Binding Name}" ... ></CheckBox>

и используйте его в своем переключателе.

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