我的ComboBox SelectionChangedEvent发送先前选择的项目

时间:2019-07-09 08:13:34

标签: c# wpf

因此,每当我更改选择时,都需要调用一个方法,该方法会将新选择与不同选项进行比较。问题是,它总是发送之前选择的对象

最初,我以为我可以反转选择,但这仅适用于2个选项。

// Create the Combobox
ComboBox selectType = new ComboBox();
selectType.Text = "Select Type";
selectType.SelectionChanged += CallChange;

ComboBoxItem sortingAlgorithm = new ComboBoxItem();
sortingAlgorithm.Content = "Sorting Algorithm";

ComboBoxItem searchingAlgorithm = new ComboBoxItem();
searchingAlgorithm.Content = "Searching Algorithm";

// add the items to ComboBox

// Call on new selection
void CallChange(object sender, SelectionChangedEventArgs args)
{
   _controller.ChangeType((string)selectType.SelectionBoxItem);
}

我认为它只是发送新的选择。我是否有任何思维上的错误,或者我有没有混淆?我也知道使用Strings比较选择是非常不好的做法,我目前将其全部更改为字典

1 个答案:

答案 0 :(得分:1)

仅在处理更改的事件之后传播所选的项目。这允许在所选值可见之前对其进行操作。因此,SelectionChanged事件发生时,SelectionBoxItem尚未更改。您必须改为引用args对象中的选定项目:

// Call on new selection
void CallChange(object sender, SelectionChangedEventArgs args)
{
  _controller.ChangeType(args.AddedItems.OfType<string>().FirstOrDefault() ?? string.Empty);
}