WPF中的事件处理,以向组合框添加复选框

时间:2018-04-02 07:27:26

标签: c# wpf

我在WPF应用程序中有两个组合框。

我已将复选框动态添加到第一个组合框中。 如果我从第一个ComboBox中选中一个复选框,则应该处理复选框事件以向第二个组合框添加一些复选框。

我试过了,但我没有工作。

代码。

private void ComboBox_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
{
    AddAnalytes();
}


public void AddCartridges()
{
    for (int i = 0; i < cartridges.Length; i++)
    {
        CheckBox cbox = new CheckBox();
      //  cbox.Name = "cbox" + cartridges[i].ToString();
        cbox.Content = cartridges[i];
        this.CartridgeCombo.Items.Add(cbox);

        //CheckBox[] cartridgeBoxes= new
    }
}

public void AddAnalytes()
{
    if (this.CartridgeCombo.SelectedItem.ToString() == "CHEM8")
    {
        Analytes = new string[] { "NA", "K", "CL", "TCO2", "BUN", "CREA", "EGFR", "GLU", "CA", "ANG", "HCT", "HGB" };

        for (int i = 0; i < Analytes.Length; i++)
        {
            CheckBox cb = new CheckBox();

            cb.Name = "cb" + Analytes[i];
            cb.Content = Analytes[i];
            this.AnalyteCombo.Items.Add(cb);
        }
    }

1 个答案:

答案 0 :(得分:1)

你根本没有使用MVVM - 所以这最终会让你觉得有点棘手 - 因为一切都是代码背后的。以下对我有用:

private void PopulateCheckboxes1()
{
    for(int idx = 0; idx < 5; idx++)
    {
        var chkBox = new CheckBox();
        chkBox.Content = string.Format($"TextBox: {idx}");
        chkBox.Tag = idx;
        chkBox.Checked += ChkBox_Checked;
        cmbBox1.Items.Add(chkBox);
    }
}

private void ChkBox_Checked(object sender, RoutedEventArgs e)
{
    var itemsToAdd = (int)(sender as Control).Tag;
    cmbBox2.Items.Clear();
    for (int idx = 0; idx < itemsToAdd; idx++)
    {
        var chkBox = new CheckBox();
        chkBox.Content = string.Format($"TextBox: {idx}");
        cmbBox2.Items.Add(chkBox);
    }
}

将自定义逻辑放在ChkBox_Checked处理程序中。我的逻辑是只根据Tag属性向组合框2添加几个复选框。