我在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);
}
}
答案 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添加几个复选框。