2011-10-12 53 views
2

相同的项目,如果I M使用以下类型的代码,然后WPF组合框的SelectionChanged事件在不触发WPF的SelectionChanged事件组合框不点火,如果它有它

cmbFunctionsList.Items.Add("sameItem"); 
cmbFunctionsList.Items.Add("sameItem"); 
cmbFunctionsList.Items.Add("sameItem"); 
cmbFunctionsList.Items.Add("sameItem"); 
cmbFunctionsList.Items.Add("sameItem"); 

有任何工作围绕这一点。

+0

我有这样的使用身边的一些其他工作obj所到cmbFunctionsList的ItemSource分配数据表,并添加新的GUID的每一行也做了string.Equals方法返回true数据表:(但我觉得卡尔的方法好得多。 – Abhi

回答

2

尝试这样做:从here

2

这当然是一个奇怪的问题。我能想到的唯一解决方法是存储组合框的索引,并且每次发生任何事情时(KeyDown,LeftMouseButtonDown等)都会根据新索引检查存储的索引。喜欢的东西:

public MainWindow() 
{ 
    InitializeComponent(); 
    //populate combo box 
    lastKnownIndex = comboBox1.SelectedIndex; 
} 

int lastKnownIndex; 

private void comboBox1_KeyDown(object sender, KeyEventArgs e) // and all other possible input events 
{ 
    if (comboBox1.SelectedIndex != lastKnownIndex) 
    { 
     //do stuff 
     lastKnownIndex = comboBox1.SelectedIndex; 
    } 
} 

有可能是一个更优雅的解决方案,但应该工作。

编辑:还也许应该让MSFT知道WPF坏;)

+0

谢谢克里斯蒂安 – Abhi

5

WPF组合框采取

ComboBoxItem newItem = new ComboBoxItem(); 
newItem.Content = "same item"; 
cmbFunctionsList.Items.Add(newItem); 

理念不会改变所选项目如果当前选定的项目和新选择的项目被认为相等,则新调用的对象(即newlyslected.Equals(currentlySelected))上调用的方法为object.Equals()

在这种情况下,由于字符串的值相等

相关问题