一个 ObservableCollection
private ObservableCollection<string> _items = new ObservableCollection<string>();
public ObservableCollection<string> Items { get { return _items; } }
在用户交互(文本框事件)时更新。
在 ListBox 中,我将显示当前值
Binding listBinding = new Binding {Source = Items};
listbox.SetBinding(ListBox.ItemsSourceProperty, listBinding);
到目前为止有效:添加新值时,列表会立即更新。
但现在我必须要求:
- 对值进行排序
- 在列表开头添加一项
我解决如下:
public IEnumerable<string> ItemsExtended
{
get
{
return new[] { "first value" }.Concat(Items.OrderBy(x => x));
}
}
我将绑定更改为该 IEnumerable,并且该列表包含一个排序列表,其中“第一个值”位于位置一。
不幸的是,当列表应该在用户交互时更新时,它不再起作用。即使再次将 IEnumerable 更改为 ObservableCollection 并直接引用私有 ObservableCollection 也不能解决问题:
return new ObservableCollection<string> (new[] { "bla" }.Concat(_items.OrderBy(x => x)));
_items 更改时如何更新列表?