因此,每当我更改选择时,都需要调用一个方法,该方法会将新选择与不同选项进行比较。问题是,它总是发送之前选择的对象
最初,我以为我可以反转选择,但这仅适用于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比较选择是非常不好的做法,我目前将其全部更改为字典
答案 0 :(得分:1)
仅在处理更改的事件之后传播所选的项目。这允许在所选值可见之前对其进行操作。因此,SelectionChanged
事件发生时,SelectionBoxItem
尚未更改。您必须改为引用args
对象中的选定项目:
// Call on new selection
void CallChange(object sender, SelectionChangedEventArgs args)
{
_controller.ChangeType(args.AddedItems.OfType<string>().FirstOrDefault() ?? string.Empty);
}