ObservableCollection
private ObservableCollection<string> _items = new ObservableCollection<string>();
public ObservableCollection<string> Items { get { return _items; } }
ユーザー インタラクション (TextBox イベント) で更新されます。
ListBox に現在の値を表示します
Binding listBinding = new Binding {Source = Items};
listbox.SetBinding(ListBox.ItemsSourceProperty, listBinding);
新しい値を追加すると、リストはすぐに更新されます。
しかし今、私は要件を満たさなければなりません:
- 値の並べ替え
- リストの先頭に項目を 1 つ追加する
私は次のように解決しました:
public IEnumerable<string> ItemsExtended
{
get
{
return new[] { "first value" }.Concat(Items.OrderBy(x => x));
}
}
その IEnumerable へのバインディングを変更しました。リストには、位置 1 に「最初の値」を持つソート済みリストが含まれています。
残念ながら、ユーザーの操作でリストを更新する必要がある場合、リストは機能しなくなります。IEnumerable を ObservableCollection に再度変更し、プライベート ObservableCollection を直接参照しても問題は解決しません。
return new ObservableCollection<string> (new[] { "bla" }.Concat(_items.OrderBy(x => x)));
_items が変更されたときにリストを更新する方法は?