1

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 が変更されたときにリストを更新する方法は?

4

1 に答える 1