У меня есть 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;
}
}
но он больше не обновляет ComboBox, если я добавляю какие-либо элементы в org_list
.
Создайте зеркальный список, который предоставляет список без пустых мест. Для внесения изменений подпишитесь на соответствующие события наблюдаемых коллекций, такие как добавление/удаление и поддержание согласованности зеркала. Затем привяжите к этому отфильтрованному списку.
Каждый раз, когда вы добавляете элемент в org_list, добавляйте его и в список, если элемент не пуст. Или просто создайте уведомление об изменении свойства для свойства списка всякий раз, когда вы добавляете элементы в org_list.