c# - 我的 ComboBox SelectionChangedEvent 发送先前选择的项目
问题描述
因此,每当我更改选择时,我都需要调用一个方法,将新选择与不同的选项进行比较。问题是,它总是发送在此之前选择的对象
最初我以为我可以反转选择,但这仅适用于 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);
}
我认为它只是发送新的选择。我有任何思维错误还是我混淆了什么?我也知道使用字符串比较选择是非常糟糕的做法,我目前正在将其全部更改为字典
解决方案
仅在处理更改的事件后传播所选项目。这允许在选定值可见之前对其进行操作。SelectionChanged
因此,事件发生的那一刻,SelectionBoxItem
还没有改变。您必须改为从args
对象中引用所选项目:
// Call on new selection
void CallChange(object sender, SelectionChangedEventArgs args)
{
_controller.ChangeType(args.AddedItems.OfType<string>().FirstOrDefault() ?? string.Empty);
}
推荐阅读
- javascript - 参数“TabsCtrl1”不是函数,未定义
- javascript - 在织物 js 画布上加载 svg 不显示圆形
- c# - 添加 HttpClientFactory 导致 cancelTokenSource 错误
- powershell - Where-Object 优化 Powershell
- android-studio - 如何运行 Dart 临时文件?似乎没有运行选项
- amp-analytics - AMP-Linker - 脚本标签包含无法解析的无效 JSON
- java - Spring Boot JPA 通过获取 NullPointerException 的条件进行选择
- java - 从用户输入多行打印到文件?
- c# - 我们可以使用一些 jquery 属性将嵌套列表转换为 xml 吗?
- javascript - Laravel Invoice & InvoiceItems - 如何更新?