c# - WPF `ComboBox` ItemsSource 属性已更改 SelectedItem 属性被设置为 null

标签 c# wpf combobox

发生的这个问题是,每当 WPF ComboBox ItemsSource 属性更改时,SelectedItem 属性将设置为 null。

重现问题的要求:

  1. 原始 ItemsSource 是一组没有值(value)的对象 类型
  2. SelectedValue 绑定(bind)到一些属性
  3. 已设置 SelectedValuePath
  4. SelectedItem 是原始 ItemsSource 中的某个项目
  5. New ItemsSource 是与 原创
  6. 不包含对同一对象的引用的 ItemsSource 内存为当前SelectedItem

实际上我想在 Datagrid 模板中绑定(bind)组合框,组合框集合存在于 View 模型中,当我更改第一列属性时,其他行组合框项目变为空。

我该如何解决这个问题?

最佳答案

SelectedItem 对象必须在 ItemsSource 集合中。

如果您想从新的 ItemsSource 集合中分配一个新的 SelectedItem,它与先前 SelectedItem 的属性相匹配,那么在更改 ItemsSource 之前保存属性值并找到匹配的项目。

var id = ((MyType)MyCombo.SelectedItem).Id;

MyCombo.ItemsSource = MyNewList;

MyCombo.SelectedItem = MyNewList.FirstOrDefault(x => x.Id == id);

关于c# - WPF `ComboBox` ItemsSource 属性已更改 SelectedItem 属性被设置为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31794046/

相关文章:

extjs - 从组合框中删除输入光标

c# 应用程序无法在另一台计算机上启动

c# - C# app : "Not a legal OleAut date"? 异常的含义

wpf - WPF Toolkit WatermarkTextBox 的自定义隐式样式

python-2.7 - 带有 LIKE 搜索的 Python Tkinter 自动完成组合框?

c# - 组合框的复合 DisplayMemberPath

c# - 在 MVC Core 应用程序中使用 AddAzureADB2C 时向 ClaimsPrincipal 添加自定义声明

c# - Xamarin Android 如何从位图创建 BMP

.net - 如何使用鼠标光标在屏幕上最大化 WPF 窗口?

c# - WPF 按钮动态命令