不結合我有3個組合框WPF組合框上變化
<Grid>
<ComboBox Name="cbo1" SelectionChanged="OnComboBoxChanged" />
<ComboBox Name="cbo2" SelectionChanged="OnComboBoxChanged"/>
<ComboBox Name="cbo3" SelectionChanged="OnComboBoxChanged" />
組合框的列表是這樣,如果「B」中的第一個框被選中,那麼{A,B,C,d} 下拉不應該有b,如果第二個設置爲最後一個需要{c,d},則需要用{a,c,d}更新。如果他們返回並更改任何我們需要相應地更新列表。我添加了一個事件oncomboboxchanged,但它不更新組合框,當我設置項目源到新的列表。
private List<string> comboList = new List<string>();
string[] defaultParam = { "A", "B", "C", "D" };
public MainWindow()
{
InitializeComponent();
foreach(string s in defaultParam)
{
LoadCombo(s);
}
}
public void LoadCombo(string name)
{
comboList.Add(name);
cbo1.ItemsSource = comboList;
cbo2.ItemsSource = comboList;
cbo3.ItemsSource = comboList;
}
private void OnComboBoxChanged(object sender,SelectionChangedEventArgs e)
{
var combo = sender as ComboBox;
string oldval = combo.Text;
string id = combo.Name;
string itemSel = (sender as ComboBox).SelectedItem.ToString();
comboList.Remove(itemSel);
//add old value only if it is not empty
if (!string.IsNullOrEmpty(oldval))
{
comboList.Add(oldval);
}
combo.ItemsSource = comboList;
ComboBox[] comboNameLst = {cbo1,cbo2,cbo3 };
foreach (ComboBox cbo in comboNameLst)
{
if (id != cbo.Name)
{
if (cbo.SelectedItem == null)
{
cbo.ItemsSource = comboList;
}
else if (cbo.SelectedItem != null)
{
string tempitemsel = cbo.SelectedItem.ToString();
comboList.Add(tempitemsel);
cbo.ItemsSource = comboList;
comboList.Remove(tempitemsel);
}
}
}
}
所以cbo.ItemSource是沒有做任何事情,做我需要做任何的事情不同,所以我看到了更新。
什麼是comboList?你在哪裏提供itemssource? – Muds
我編輯帖子的代碼添加到項目源 – user565992
如果您從第一秒選擇將有BCD,並且如果您在第二個A中選擇b仍然會有ABCD? – Muds