0

「First Name」と「Last Name」の 2 つの列が設定された DataGrid があるとします。

私の目標は、DataGrid を LastName で並べ替えることです。ObservableCollection (DataGrid の背後) が追加されているか、アイテムが削除されているときに機能するはずです。

単純な XAML ソリューションはありますか、それともコードを介して行う必要がありますか?

PS ICollectionView ソリューションを認識していますが、小さくて自然な修正を探しています。

4

3 に答える 3

0

SortedList をデータ コンテキストとして使用し、ViewModel で INotifyPropertyChanged を実装すると、ObservableCollection が置き換えられます。
また、SortedList を使用すると、必要に応じてコレクションを並べ替えることができます...

于 2013-08-22T15:01:08.217 に答える
0

user1763180 の提案に従って実装すると、コレクションにアクセスするたびINotifyPropertyChangedに呼び出す場合にのみ機能します。インターフェイスを扱う必要がないので便利です。OnPropertyChangedAddObservableCollectionINotifyPropertyChanged

最も簡単な方法は電話することです

dataGridView.Sort(dataGridView.Columns[1], ListSortDirection.Ascending);

あなたのDataGridView

別のオプション:コレクションを自動的に並べ替えるために使用するメソッドを呼び出すInsertかオーバーライドします。AddInsert

public void Add(string firstName, string lastName)
{
  for (int i = 0; i < _lastNames.Count; i++)
  {
    if (lastName.CompareTo(_lastNames.Items[i]) >= 0)
    {
      _lastNames.Insert(i, lastName);
      _firstNames.Insert(i, firstName);
      break;
    }
  }
}
于 2013-08-22T15:10:42.567 に答える