忽略空的 ComboBoxItems

Ignore empty ComboBoxItems

我有一个组合框,其中包含有边界的项目,例如

<ComboBox ItemsSource="{Binding Path=list}"
          DisplayMemberPath="name"
          SelectedValuePath="id"
          SelectedValue="{Binding Path=id, Mode=TwoWay}"/>

问题是 list 中至少有 10 项可以为空。

有没有办法忽略空值作为项目?


我尝试使用不同的方法删除空值,例如

[System.Xml.Serialization.XmlIgnore]
public ObservableCollection<myclass> list
{
    get
    {
        ObservableCollection<myclass> list = new ObservableCollection<myclass>();

        foreach (var item in org_list.Where(x => !string.IsNullOrWhiteSpace(x.name)).ToList())
        {
            list.Add(item);
        }

        return list;
    }
}

但如果我向 org_list 添加任何项目,它不会再更新 ComboBox。

创建一个镜像列表,公开没有空的列表。对于更改订阅相关的可观察集合事件,例如 add/remove 并保持镜像一致。然后绑定到这个过滤列表。