【问题标题】:Ignore empty ComboBoxItems忽略空的 ComboBoxItems
【发布时间】:2019-10-15 02:00:14
【问题描述】:

我有一个包含有界项的 ComboBox,例如

<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。

【问题讨论】:

  • 每次将项目添加到 org_list 时,如果项目不为空,也将其添加到列表中。或者,每当您将项目添加到 org_list 时,只需为列表属性引发属性更改通知。

标签: c# wpf combobox binding observablecollection


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-08-21
    • 2012-04-22
    • 2014-03-27
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多