【发布时间】:2015-11-10 11:54:57
【问题描述】:
我在 EDIT 2 中重新表述了我的问题
所有,我在 WPF 中有一个组合框。当我设置 SelectedIndex 属性时,它会触发一个 SelectionChanged 事件,这是正确的行为。但是我想要的是让 ComboBox 在我以编程方式设置 SelectedIndex 属性时不会触发事件。有办法吗?
我正在使用 .Net 4.5
编辑 1:代码
public void AddLocation()
{
List<String> locations = new List<String>();
//LocationBox is the name of ComboBox
LocationBox.ItemsSource = locations;
locations.Add("L1");
locations.Add("B1");
locations.Add("B3");
LocationBox.SelectedIndex = 2; //<-- do not want to raise SelectionChanged event programmatically here
locations.Add("G1");
locations.Add("G2");
locations.Add("F1");
locations.Add("F3");
}
private void LocationBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Console.WriteLine(LocationBox.SelectedIndex);
}
编辑 2:改写问题
我想在 ComboBox 中静默选择一个项目,即无需用户交互(使用代码/以编程方式),因此它不会触发 SelectionChanged 事件。我该怎么做?
【问题讨论】:
-
当您选择特定索引时,您希望组合框不起作用?
-
当我以编程方式选择特定索引时,ComboBox 会触发 SelectionChanged 事件。在我的代码中,我不希望在特定情况下这样做。另一方面,当用户与 ComboBox 交互时,它应该触发 SelectionChanged 事件
-
着火了?我不明白..如果你解释容易理解的话,我可以帮助你:) 你应该上传你的源代码
-
火是Raise的同义词。触发事件意味着引发事件。为了您的方便,我添加了源代码。
-
只是好奇,如果你不想提高它,你为什么首先添加处理程序?您添加它但不想使用它的具体场景是什么?